『壹』 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的設計模式中,有一種模屬式叫:觀察者模式,和這個類似。