理解java中接口與事件監聽器

一:接口
接口在咱們生活中無處不在,經過一個usb接口,咱們能夠經過u盤傳輸數據,這個接口是被定義過的,只有指定的類型可以使用這個接口,且經過這個接口咱們傳輸的數據不會被破壞。
而在java中接口做用相似,定義一個具備特定特色的接口,在合適的地方引用它,執行所對應的功能,這樣可以實現代碼的分離。
下面咱們來看一下接口的定義:java

關鍵字:interface
			格式:public interface 接口名{	}

接口的屬性:web

[public static final]屬性類型 屬性名=屬性值;
			static:靜態的,修飾的內容能夠經過類名或接口名直接訪問。
			final:不可改變的,修飾屬性,則屬性必須初始化。
			[	]裏的內容能夠省略

接口的方法:svg

[public abstract]方法返回值類型 方法名(參數類型 參數名)
			abstract:抽象的,修飾方法,則方法不能有方法體。
			[	]中內容能夠省略

接口的使用:
接口不能建立對象,須要接口類型的對象則須要建立一個類,從而實現接口佈局

關鍵字:implements
			格式:public class 類名 implements 接口名{	}
			**注意:在類中實現接口時,必須實現接口中全部的方法**

總結來講,接口至關於制定了一種規則,只有符合這種規則了才能進入相應的接口。
二:事件監聽機制
想象一下,好比在生活中,有一個攝像頭在監視着小明,監督他好好學習,如若發現他在作別的事情則會發出警告提示讓他繼續學習,而在java中原理也是同樣。
給事件源組件添加事件監聽器,當事件源組件上發生相應類型的事件時,則自動的調用監聽器中的內容。
在電腦上常見的事件類型有三種學習

鼠標事件:用鼠標操做組件(鼠標的移動,點擊,鬆開)
				鍵盤事件:用鍵盤操做組件(按動鍵盤的按鍵)
				動做事件:包含鼠標點擊按鈕,鍵盤確認等。

事件源組件:事件發生所在的組件,好比在一個建立好的畫圖板上。
事件監聽器:java中爲每一種類型的事件都提供了一個對應類型的事件監聽器。ui

鼠標事件監聽器:MouseListener
			鍵盤事件監聽器:KeyListener
			動做事件監聽器:ActionListener

事件監聽器的實現:spa

第一步:肯定事件源組件
					例如一個按鈕
		第二步:肯定事件類型
					點擊按鈕則爲動做事件
		第三步:
					建立一個監聽器類,實現對應類型的監聽器接口
		第四步,在源程序建立監聽器對象,給事件源組件添加事件監聽器。

下面咱們看一個登錄界面的實例
這一段是創建一個登錄界面code

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);
		//添加登陸按鈕
		JButton butt = new JButton();
		frame.add(butt);
		
	
		//加入接口類(鼠標監聽器)
		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();
	}
}

在這裏插入圖片描述這是咱們創建好的登錄界面orm

咱們從中創建了兩個接口,兩個動做監聽器分別監聽按鈕是否點擊和是否按鍵盤上的按鍵,今後出現相應結果。xml

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

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