Java事件處理機制涉及三個成員:事件源、事件和事件監聽器
事件源:Java的AWT或Swing組件,該組件就是事件源,經過new關鍵字便可建立
事件:由系統自動產生
事件監聽器:整個事件處理的核心。java
事件監聽器必須實現事件監聽器接口,以鼠標事件爲例ide
1 class btnMouseListener(事件監聽器的名字) implements MouseListener(鼠標事件監聽器接口) { 2 // 事件處理器(發生不一樣的事件進行的操做) 3 // 1. 鼠標進入組件事件 4 public void mouseEntered(處理器,即事件發生的動做) (MouseEvent(事件名) e) { 5 System.out.println("鼠標進入按鈕"); 6 } 7 // 2. 鼠標離開組件事件 8 public void mouseExited (MouseEvent e) { 9 System.out.println("鼠標離開按鈕"); 10 } 11 }
完整的事件處理程序spa
1. 定義事件監聽器類,必須實現XxxListener接口code
2. 完成事件處理器中方法的填寫,規定特定的事件發生時執行的動做blog
3. 建立事件監聽器類的實例並添加進組件接口
鼠標進入和離開按鈕的事件事件
1 package p1; 2 3 import java.awt.event.MouseEvent; 4 import java.awt.event.MouseListener; 5 6 import javax.swing.JButton; 7 import javax.swing.JFrame; 8 9 public class MouseEventDemo { 10 public static void main(String[] args) { 11 JButton jbtn = new JButton("btn"); 12 13 // 3. 建立事件監聽器,並添加進組件(事件源)(註冊監聽器) 14 BtnMouseListener btnML = new BtnMouseListener(); 15 jbtn.addMouseListener(btnML); 16 17 JFrame jf = new JFrame("事件處理"); 18 jf.add(jbtn); 19 20 jf.setSize(800, 600); 21 jf.setLocationRelativeTo(null); 22 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 23 jf.setVisible(true); 24 } 25 } 26 27 // 1. 定義事件監聽器類,必須實現MouseListener接口 28 class BtnMouseListener implements MouseListener { 29 30 // 2. 事件處理器,用於響應特定的事件 31 @Override 32 public void mouseEntered(MouseEvent e) { 33 System.out.println("鼠標進入按鈕"); 34 } 35 36 @Override 37 public void mouseExited (MouseEvent e) { 38 System.out.println("鼠標離開按鈕"); 39 } 40 41 @Override 42 public void mouseClicked(MouseEvent e) { 43 // TODO Auto-generated method stub 44 45 } 46 47 @Override 48 public void mousePressed(MouseEvent e) { 49 // TODO Auto-generated method stub 50 51 } 52 53 @Override 54 public void mouseReleased(MouseEvent e) { 55 // TODO Auto-generated method stub 56 57 } 58 59 }
程序效果:it
事件、監聽器和處理器之間的關係io