java中介面和事件監聽器的深入理解
一:介面
介面在我們生活中無處不在,通過一個usb介面,我們可以通過u盤傳輸資料,這個介面是被定義過的,只有指定的型別能夠使用這個介面,且通過這個介面我們傳輸的資料不會被破壞。
而在java中介面作用類似,定義一個具有特定特點的介面,在合適的地方引用它,執行所對應的功能,這樣能夠實現程式碼的分離。
下面我們來看一下介面的定義:
關鍵字:interface
格式:public interface 介面名{}
介面的屬性:
[public static final]屬性型別 屬性名=屬性值;
static:靜態的,修飾的內容可以通過類名或介面名直接訪問。
final:不可改變的,修飾屬性,則屬性必須初始化。[]裡的內容可以省略
介面的方法:
[public abstract]方法返回值型別 方法名(引數型別 引數名)
abstract:抽象的,修飾方法,則方法不能有方法體。
[]中內容可以省略
介面的使用:
介面不能建立物件,需要介面型別的物件則需要建立一個類,從而實現介面
關鍵字:implements
格式:public class 類名 implements 介面名{}
**注意:在類中實現介面時,必須實現介面中所有的方法**
總結來說,介面相當於制定了一種規則,只有符合這種規則了才能進入相應的介面。
二:事件監聽機制
想象一下,比如在生活中,有一個攝像頭在監視著小明,監督他好好學習,如若發現他在做別的事情則會發出警告提示讓他繼續學習,而在java中原理也是一樣。
給事件源元件新增事件監聽器,當事件源元件上發生相應型別的事件時,則自動的呼叫監聽器中的內容。
在電腦上常見的事件型別有三種
滑鼠事件:用滑鼠操作元件(滑鼠的移動,點選,鬆開)
鍵盤事件:用鍵盤操作元件(按動鍵盤的按鍵)
動作事件:包含滑鼠點選按鈕,鍵盤確認等。
事件源元件:事件發生所在的元件,比如在一個建立好的畫圖板上。
事件監聽器:java中為每一種型別的事件都提供了一個對應型別的事件監聽器。
滑鼠事件監聽器:MouseListener
鍵盤事件監聽器:KeyListener
動作事件監聽器:ActionListener
事件監聽器的實現:
第一步:確定事件源元件
例如一個按鈕第二步:確定事件型別
點選按鈕則為動作事件
第三步:
建立一個監聽器類,實現對應型別的監聽器介面
第四步,在源程式建立監聽器物件,給事件源元件新增事件監聽器。
下面我們看一個登陸介面的例項
這一段是建立一個登陸介面
public class UI { /** * */ public void showIU(){ //建立新介面 JFrame frame=new JFrame(); frame.setSize(600,900); //使用者點選關閉視窗時關閉介面 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //流式佈局 FlowLayout layout=new FlowLayout(); frame.setLayout(layout); //插入賬號文字框 JTextField register=new JTextField(30); frame.add(register); //標籤1 JLabel label1=new JLabel("註冊賬號"); frame.add(label1); //密碼 JPasswordField word=new JPasswordField(30); frame.add(word); //標籤2 JLabel label2= new JLabel("找回密碼"); frame.add(label2); JCheckBox checkbox=new JCheckBox("記住密碼 "); frame.add(checkbox); //設定複選框大小 Dimension check =new Dimension(200,35); checkbox.setPreferredSize(check); //加入介面類 lisener lisen=new lisener(); //給按鈕新增監聽器 butt.addActionListener(lisen); //讓監聽器的文字框和處理的文字框對應 lisen.nameinput=register; lisen.passinput=word; //讓監聽器的框與此相同 lisen.jiemian=frame; word.addActionListener(lisen); /* //加入介面 Listener2 lisen1=new Listener2(); //新增監聽器 word.addKeyListener(lisen1); //對應文字框和密碼框 lisen1.name1=register; lisen1.pass1=word; lisen1.frame=frame; */ //設定介面可見 frame.setVisible(true); } public static void main(String[] args){ UI ui=new UI(); ui.showIU(); } }
這是我們建立好的登陸介面
我們從中建立了兩個介面,兩個動作監聽器分別監聽按鈕是否點選和是否按鍵盤上的按鍵,從此出現相應結果。
import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JDialog; import javax.swing.JTextField; import javax.swing.JOptionPane; import javax.swing.JFrame; public class lisener implements ActionListener{ JTextField nameinput; JTextField passinput; JFrame jiemian; public void actionPerformed(ActionEvent e){ System.out.println("滑鼠點選了"); String name=nameinput.getText(); String password=passinput.getText(); if(name.equals("majunlong")&&password.equals("12345678")){ System.out.println("登陸成功"); jiemian.dispose(); } else{ System.out.println("登陸失敗"); JOptionPane pane=new JOptionPane(); JOptionPane.showMessageDialog(null,"登陸失敗","警告",JOptionPane.ERROR_MESSAGE); } } }
這是一個滑鼠監聽器,當按鈕被點選時發出提示框登陸成功或失敗。
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JTextField; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Listener2 implements KeyListener{ JTextField name1; JFrame frame; JTextField pass1; public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub System.out.println("滑鼠點選了"); String name=name1.getText(); String password=pass1.getText(); if(name.equals("majunlong")&&password.equals("12345678")){ System.out.println("登陸成功"); frame.dispose(); } else{ System.out.println("登陸失敗"); JOptionPane pane=new JOptionPane(); JOptionPane.showMessageDialog(null,JOptionPane.ERROR_MESSAGE); } } }
鍵盤監聽器,在輸入密碼之後按下回車,獲得相應提示。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。