1. 程式人生 > 程式設計 >java中介面和事件監聽器的深入理解

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);
  
 }
  
 
 }
 }

鍵盤監聽器,在輸入密碼之後按下回車,獲得相應提示。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。