導航:首頁 > 編程語言 > java中事件機制

java中事件機制

發布時間:2022-09-24 06:29:52

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語言的事件處理機制,事件處理的3要素是什麼.

(1)事件源 事件源是一個事件的產生者,如按鈕、窗口及文本域等。
(2)事件類型 Java中所有的事件都封裝成一個類,這些事件類被集中在java.awt.event包,所有的事件類均繼承了AWTEvent類和一個方法——getSouce()方法,該方法返回發生事件的對象。
(3)事件監聽器 不同的類型事件發生後,由事件監聽器接收事件並調用相應的事件處理方法。所有的事件監聽器實際上都是一個java.awt.event包中的介面,引入了java.util.EventListener介面。不同事件類型的監聽器具有不同的方法。

㈢ 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使用面向對象的方式來處理異常,它把程序中發生的每個異常也都分別封裝到一個對象來表示的,該對象中包含有異常的信息。
Java對異常進行了分類,不同類型的異常分別用不同的Java類表示,所有異常的根類為java.lang.Throwable,Throwable下面又派生了兩個子類:Error和Exception,Error 表示應用程序本身無法克服和恢復的一種嚴重問題,程序只有死的份了,例如,說內存溢出和線程死鎖等系統問題。Exception表示程序還能夠克服和恢復的問題,其中又分為系統異常和普通異常,系統異常是軟體本身缺陷所導致的問題,也就是軟體開發人員考慮不周所導致的問題,軟體使用者無法克服和恢復這種問題,但在這種問題下還可以讓軟體系統繼續運行或者讓軟體死掉,例如,數組腳本越界(),空指針異常(NullPointerException)、類轉換異常(ClassCastException);普通異常是運行環境的變化或異常所導致的問題,是用戶能夠克服的問題,例如,網路斷線,硬碟空間不夠,發生這樣的異常後,程序不應該死掉。
java為系統異常和普通異常提供了不同的解決方案,編譯器強制普通異常必須try..catch處理或用throws聲明繼續拋給上層調用方法處理,所以普通異常也稱為checked異常,而系統異常可以處理也可以不處理,所以,編譯器不強制用try..catch處理或用throws聲明,所以系統異常也稱為unchecked異常。

提示答題者:就按照三個級別去思考:虛擬機必須宕機的錯誤,程序可以死掉也可以不死掉的錯誤,程序不應該死掉的錯誤;

㈤ java中事件機制是一種什麼設計模式

是對發出事件的疑惑。每個平台的具體實現方法不同,不過你可以假象這樣的狀況:
在程序的底層有一個消息循環,專門檢測各種狀態,當一些狀態改變時就「發出事件」。例如鍵盤輸入會設置一個狀態,程序在消息循環里看到了狀態的改變,於是調用onKeyDown、onKeyUp等方法。這種與I/O相關的事件涉及到操作系統也不奇怪。
就是說在實現圖形界面的庫的底層會有類似這樣的循環:

㈥ java達人,請簡單說說java的事件機制

也打算看看高手怎麼說,我先說說我的淺見吧。JAVA里的事件是用添加事件監聽器實現的,而事件監聽器都是一些介面,比如ActionListener介面,介面里都有對應的方法,只要實現對應的方法就可以了。最主要的是對組件添加監聽器,JAVA有兩種方式,第一個是創建一個類繼承ActionListener介面,實現對應的方法,然後用"組件.add(new 實現類())"來添加,還有一種差不多,是"組件.add(new ActionListener(ActionEvent e){實現方法})",如果你可能多個組件用到同一個事件建議用第一個,否則兩個都可以,建議用第一個,可以使程序很清晰。還有一些事件適配器,感覺和介面差不多比如WindowAdapter(),看過一些資料不是很明白,好像是提供了特別的介面方便用戶調用吧。

㈦ 1.java的事件處理機制是怎樣的

java事件處理機制你必須得明確以下幾個概念:
核心:java採用的是事件源——事件監聽器模型
1:事件(event):是指一個狀態的改變,或者一個活動的發生。例如,簡單常見的是單擊一個按鈕,或者輸入一個按鍵都是一個事件。
2:事件源(event source):能夠產生事件的對象稱為事件源,如文本框,按鈕,下拉列表等。
3:事件監聽器(event listener):需要一個對象對事件源進行監聽,以便對發生的事件做出處理,該對象就是事件監聽器。事件源通過調用相應的方法將某個對象作為自己的監聽器。無論應用程序還是小程序都採用這一機制。
例,對於按鈕,注冊監聽器的方法是 addActionListener(監視器);:
4: 事件源獲得監聽器之後,相應的操作就會導致事件的發生,並通知監聽器,監聽器就會做出相應的處理。
5:處理事件的介面:監聽器負責處理事件源發生的事件。為了處理事件源發生的事件,監聽器會自動調用一個方法來處理事件,該方法定義在相應事件的介面中。

㈧ java事件機制

程序里寫注冊按鈕綁定一下事件啊。
我網上找的,你參照一下吧

import java.awt.*;
import java.awt.event.*;

public class MouseEventDemo extends MouseAdapter {
Frame frame;
Panel panel;
Label text;

public static void main(String[] args) {
new MouseEventDemo();
}

public MouseEventDemo() {
frame = new Frame("AWTDemo");
frame.addWindowListener(new AdapterDemo());
frame.setSize(600, 400);

panel = new Panel();
panel.addMouseListener(this);

text = new Label("something happened..");

panel.add(text);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}

public void mousePressed(MouseEvent e) {
text.setText("x: " + e.getX() + ", y: " + e.getY());
System.out.print("screen x: " + e.getXOnScreen());
System.out.print(", y: " + e.getYOnScreen() + "\n");

if (e.getButton() == MouseEvent.BUTTON1) {
System.out.println("left button");
}
if (e.getButton() == MouseEvent.BUTTON2) {
System.out.println("middle button");
}
if (e.getButton() == MouseEvent.BUTTON3) {
System.out.println("right button");
}

System.out.println("mouse position: " + e.getPoint());
System.out.println("mouse screen position: " + e.getLocationOnScreen());
System.out.println("mouse clicks: " + e.getClickCount());
}
}

class AdapterDemo extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}

閱讀全文

與java中事件機制相關的資料

熱點內容
程序員留學移民 瀏覽:47
梁中間部位箍筋加密區 瀏覽:117
頻譜分析pdf 瀏覽:750
樂2怎麼升級安卓70 瀏覽:172
java中獲取日期 瀏覽:506
單片機74hc245 瀏覽:272
美國歷史上的總統pdf 瀏覽:751
程序員脫單實驗室靠不靠譜 瀏覽:458
php中間四位手機號 瀏覽:869
永旺app怎麼樣了 瀏覽:516
壓縮空氣流量計算軟體 瀏覽:649
智慧聊天app怎麼激活 瀏覽:924
一加換機備份到哪個文件夾 瀏覽:735
支撐pdf 瀏覽:417
java空文件夾刪除 瀏覽:587
安卓9跟81有什麼區別 瀏覽:912
n1藍寶書pdf 瀏覽:244
為什麼安卓機拍照那麼丑 瀏覽:695
伺服器綁定雲產品實例 瀏覽:314
程序員認真工作被開除 瀏覽:455