本文目錄一覽:
java的事件處理是什麼?
打個比方:如果用戶用鼠標單擊了按鈕對象button,則該按鈕button就是事件源,而java運行時系統會生成ActionEvent類的對象actionE,該對象中描述了該單擊事件發生時的一些信息,然後,事件處理者對象將接收由java運行時系統傳遞過來的事件對象actionE並進行相應的處理。
由於同一個事件源上可能發生多種事件,因此java採取了授權處理機制,事件源可以把在其自身所有可能發生的事件分別授權給不同的事件處理者來處理。比如在Canvas對象上既可能發生鼠標事件,也可能發生鍵盤事件,該Canvas對象就可以授權給事件處理者一來處理鼠標事件,同時授權給事件處理者二來處理鍵盤事件。有時也將事件處理者稱為監聽器,主要原因也在於監聽器時刻監聽着事件源上所有發生的事件類型,一旦該事件類型與自己所負責處理的事件類型一致,就馬上進行處理。授權模型把事件的處理委託給外部的處理實體進行處理,實現了將事件源和監聽器分開的機制。事件處理者(監聽器)通常是一個類,該類如果要能夠處理某種類型的事件,就必須實現與該事件類型相對的接口。例如例5.9中類ButtonHandler之所以能夠處理ActionEvent事件,原因在於它實現了與ActionEvent事件對應的接口ActionListener。每個事件類都有一個與之相對應的接口。將事件源對象和事件處理器(事件監聽器)分開。
使用授權處理模型進行事件處理的一般方法歸納如下:
1.對於某種類型的事件XXXEvent, 要想接收並處理這類事件,必須定義相應的事件監聽器類,該類需要實現與該事件相對應的接口XXXListener;
2.事件源實例化以後,必須進行授權,註冊該類事件的監聽器,使用addXXXListener(XXXListener ) 方法來註冊監聽器。
這是我的一點個人見解,希望對你有幫助,加油。
簡述java事件處理機制?
java事件處理機制你必須得明確以下幾個概念:
核心:java採用的是事件源——事件監聽器模型
1:事件(event):是指一個狀態的改變,或者一個活動的發生。例如,簡單常見的是單擊一個按鈕,或者輸入一個按鍵都是一個事件。
2:事件源(event source):能夠產生事件的對象稱為事件源,如文本框,按鈕,下拉列表等。
3:事件監聽器(event listener):需要一個對象對事件源進行監聽,以便對發生的事件做出處理,該對象就是事件監聽器。事件源通過調用相應的方法將某個對象作為自己的監聽器。無論應用程序還是小程序都採用這一機制。
例,對於按鈕,註冊監聽器的方法是 addActionListener(監視器);:
4: 事件源獲得監聽器之後,相應的操作就會導致事件的發生,並通知監聽器,監聽器就會做出相應的處理。
5:處理事件的接口:監聽器負責處理事件源發生的事件。為了處理事件源發生的事件,監聽器會自動調用一個方法來處理事件,該方法定義在相應事件的接口中。
java的事件處理機制是怎樣
JAVA中當事件發生時,他不會進行廣播,而是僅僅向關心此事件的對象發送消息。那麼他怎麼知道誰「關心」此事件呢。
這就要求關心此事件的對象,先行向事件的發出方進行註冊,表示我關心此事件,當事件發生時請通知我。
【簡單來說】:就是事件的「處理方」向事件的「發出方」先行註冊,當事件發生時,事件的「發生方」負責通知事件的「處理方」。
譬如我編寫一個窗口,用到了JFrame,我想實現一個功能,當按下Q鍵時,窗口關閉。
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
public class TestFrame extends JFrame {
private static final long serialVersionUID = 5671798241966272024L;
public static void main(String[] args) {
new TestFrame();
}
public TestFrame() {
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
addKeyListener(new MyKeyListener());// 這句話就是所謂的註冊事件。
// MyKeyListener作為事件的處理方,向事件的觸發方TestFrame進行註冊。
// 這句話的意思是說,MyKeyListener對TestFrame說,我對於你的鍵盤事件感興趣,如果有鍵盤事件請告訴我。
// 而TestFrame有一個列表保存着MyKeyListener對象的引用。當鍵盤按下時,他會列表中所有引用,調用KeyPressed方法。
// 當鍵盤鬆開時還會調用keyReleased方法,但是我們對於鍵盤鬆開不太關心,所以下面的類,我們可以只編寫KeyPressed方法。
}
private final class MyKeyListener extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_Q) {
System.exit(0);
}
}
}
}
java什麼是事件?什麼是事件源
常見的事件包括 移動鼠標 , 單雙擊鼠標各個按鈕 ,單擊按鈕 ,在文本字段輸入 ,在菜單中選擇菜單項 ,在組合框中選擇、單選和多選 ,拖動滾動條 ,關閉窗口………
事件源 與用戶進行交互的GUI組件,表示事件來自於哪個組件或對象
比如要對按鈕被按下這個事件編寫處理程序,按鈕就是事件源
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303499.html