導航:首頁 > 編程語言 > java消息事件

java消息事件

發布時間:2024-06-17 12:36:44

『壹』 java 自定義事件的觸發及監聽

JAVA事件響應機制

1,先自定義一個事件

public class MyEvent extends java.util.EventObject{
public MyEvent(Object source)
{
super(source);
}
}

2,再自定義一個監聽器

public class MyListener implements java.util.EventListener{
//這里是當事件發生後的響應過程
public void EventActivated(MyEvent me)
{
System.out.println("事件已經被觸發");
}
}

3,以下這個類為觸發事件的事件源

public class MyObject {
private Vector vectorListeners=new Vector();

public synchronized void addMyListener(MyListener ml)
{
vectorListeners.addElement(ml);
}

public synchronized void removeMyListener(MyListener ml)
{
vectorListeners.removeElement(ml);
}

protected void activateMyEvent()
{
Vector tempVector=null;

MyEvent e=new MyEvent(this);

synchronized(this)
{
tempVector=(Vector)vectorListeners.clone();

for(int i=0;i<tempVector.size();i++)
{
MyListener ml=(MyListener)tempVector.elementAt(i);
ml.EventActivated(e);
}
}

}

//定義一個公用方法用於觸發事件
public void test()
{
activateMyEvent();
}
}

4,測試類

public class Test {

public static void main(String[] args)
{
MyObject mo=new MyObject();

//注冊該事件
mo.addMyListener(new MyListener());

//觸發該事件
mo.test();
}
}

『貳』 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中什麼是事件源,事件的處理過程是什麼

就是你通過什麼觸發了一個事件,比如單擊按鈕,那麼這個按鈕就是事件源,滑鼠的移動(覆蓋,離開,),鍵盤的輸入,根據不同的情況可做不同的監聽事件,使用不同的類來處理!

『伍』 淺析Java語言的事件處理快捷回復

在JAVA程序設計中 事件的處理是非常重要的 尤其是在需要自定義事件和設計JavaBean時 對事件的處理過程有一個完整的認識對於編程是很有幫助的

下面用一個演示性的例子來說明事件及其處理過程

一 事件的組成

如果想要自定義一個事件 則必須提供一個事件的監聽介面以及一個事件類 在JAVA中監聽介面繼承java util EventListener 事件類繼承java util EventObject 很多基本的事件在編程環境中都已經提供可以很方便使用 但是在自定義事件中必須要要了解這些

下面是一個事件類的代碼 事件類可以向用戶處理程序提供被監聽類的信息

import java util *;

public class PropertyEvent extends EventObject {

public PropertyEvent(){}

}

下面是監聽介面的代碼

import java util *;

public interface PropertyListener extends EventListener {

public void propertyChanged(PropertyEvent propertyEvent);

}

二 事件的處理機制

下面是一段簡要的被監聽類代碼 通過代碼分析事件處理過程

import java util *;

public class Exam {

private int property;

//listeners用來存放已注冊的監聽對象

private Set listeners= new HashSet();

public void addListener(PropertyListener propertyListener){

//listeners必須保證只能被一個線程訪問

synchronized(listeners){

listeners add(propertyListener);

}

}

public void firePropertyChange(){

Iterator iterator;

synchronized(listeners){

//將listeners中的類名放到iterator

iterator = new HashSet(erator();

}

//創建事件類

PropertyEvent propertyEvent = new PropertyEvent();

while(iterator hasNext()){

PropertyListener propertyListener = (propertyListener) iterator next();

//調用用戶的事件處理程序

propertyListener propertyChanged(propertyEvent);

}

}

}

當屬性值發生變化時 首先進行內部處理調用firePropertyChange方法 產生一個事件對象然後用事件對象為參數來調用用戶的事件處理程序

三 事件處理的使用

基本用法

public Exam exam;

exam addListener(this);

public void propertyChange(PropertyEvent event){ }

注 exam是被監聽對象 this為監聽對象 是已經實現了介面方法的當前類 addListener

將當前類注冊到listeners

一個被監聽對象可以有多個監聽對象

exam addListener(listener );

exam addListener(listener );

這樣當exam的property發生變化時 actionListener 和actionListener 的處理程序都會

被調用 當然listener 和listener 必須都是已實現介面方法的類

被監聽的對象也可以是實現了方法的介面

exam addListener(

new PropertyListener(){

//用戶定義事件處理過程

public void propertyChange(PropertyEvent event){

}

);

lishixin/Article/program/Java/hx/201311/26740

『陸』 java中的事件監聽是怎樣實現隨時監聽的,是通過線程嗎

java中的事件監聽不是通過線程實現的,它是通過一種注冊--通知機制實現的。在專java的設計模式中,有一種模屬式叫:觀察者模式,和這個類似。

閱讀全文

與java消息事件相關的資料

熱點內容
win10藍屏是硬碟壞了么 瀏覽:46
沈陽哪裡適合學編程 瀏覽:811
django19常用版本 瀏覽:521
三國志11保存在哪個文件夾 瀏覽:88
iphone4s加速 瀏覽:108
編程內存和顯卡哪個重要 瀏覽:672
android連接網路列印機 瀏覽:195
linuxsftp如何上傳文件 瀏覽:603
蘋果文件覆蓋 瀏覽:327
網路足彩名人有哪些 瀏覽:639
pc共享網路給電腦 瀏覽:796
linuxkill重啟進程 瀏覽:658
sketchup景觀教程 瀏覽:730
win10管理找不到模塊 瀏覽:472
蘋果手機查看電腦文件 瀏覽:61
微信不訪問視頻文件夾嗎 瀏覽:259
文件夾加密大師注冊碼 瀏覽:1
onedrive怎麼上傳文件 瀏覽:488
android多線程寫文件棧溢出 瀏覽:242
台電酷閃量產工具 瀏覽:837

友情鏈接