在java中是采取委托事件處理機制。事件源發生事件,委托給監聽器處理。就好像是我把電腦弄壞了,自己不修,委托給電腦城修。
事件源:能夠接收外部事件的源體。 偵聽器:能夠接收事件源通知的對象。 事件處理程序:用於處理事件的對象
如果有一天你走在路上一不小心被天上掉下來的花瓶砸到了,並且暈死了過去。那么整個過程其實就是一個事件處理流程,而且我們可以非常方便的分析出剛才所提到的事件驅動模型中的三大要素。
1.被砸暈的這個人其實就是事件源,因為他是能夠接受到外部的事件的源體。
2.偵聽器就是這個人的大腦神經,因為它會感知到疼痛。
3.事件處理就是這個人暈死了過去。
Java Swing為開發者提供了很多現成的組件,如:按鈕(JButton),單選按鈕(JRadioButton)等。為了管理用戶與組成程序圖形用戶界面的組件間的交互,必須理解在Java中如何處理事件。
假設用戶單擊了程序圖形用戶界面中的一個按鈕,其實該按鈕就是這個事件的源(可以引發事件的物體)。所有的Java Swing對象都有感知自己被操作的能力,因此JButton按鈕也具有這樣能力。一個事件通常必須有一個源對象,這里就是JButton對象。當單擊按鈕時,JButton組件類會生成一個用於存放該事件參數的ActionEvent的對象,該對象包含了事件及事件源的信息。
當JButton感知到自己被點擊以后會將這種感覺傳遞給某個偵聽器對象,該偵聽器對象原先已被告知對該類事件感興趣,偵聽器對象僅是一種偵聽特定事件的對象。這里的“將事件傳遞給偵聽器”僅意味着事件源調用偵聽器對象中的一個特定方法,並以事件對象作為實參。偵聽器對象可以偵聽一個特定對象的事件
java委托事件模型的實現步驟
1:建立事件源對象 2:為事件源尋找合適的監聽器 3:為監聽器添加適當的處理程序 4:給監聽器和事件源建立聯系。
ActionListener接口是用得最多的,能監聽點擊事件,如鼠標點擊,鍵盤和觸摸
public class Task extends JFrame{
private JButton but;
public Task(){
this.setLayout(null);
but=new JButton("確定"); //事件源——確定按鈕
but.setBounds(250, 180, 70, 20);
but.addActionListener(new MyTest()); //將事件傳給監聽器 MyTest
this.add(but);
//設置窗口的關閉方法
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//設置窗口的大小
this.setSize(600,400);
//設置窗口居中
this.setLocationRelativeTo(null);
//將窗口設置為可顯示
this.setVisible(true);
}
public static void main(String[] args){
new Task();
}
}
public class MyTest implements ActionListener{ //監聽器,實現ActionListene接口
private int i;
@Override
public void actionPerformed(ActionEvent e) { //重寫ActionListene方法
i++;
System.out.println(i); //監聽器的處理方法:輸出i的值
}
}