国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java的事件處理

2019-11-18 16:00:24
字體:
來源:轉載
供稿:網友

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(listeners).iterator();

}

//創建事件類

PropertyEvent propertyEvent = new PropertyEvent();

while(iterator.hasNext()){

PropertyListener propertyListener = (propertyListener) iterator.next();

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

propertyListener.propertyChanged(propertyEvent);

}

}

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

三.事件處理的使用

1.基本用法

public Exam exam;

exam.addListener(this);

public void propertyChange(PropertyEvent event){...}

注:exam是被監聽對象,this為監聽對象,是已經實現了接口方法的當前類,addListener 將當前類注冊到listeners.

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

exam.addListener(listener1);

exam.addListener(listener2);

這樣當exam的property發生變化時,actionListener1和actionListener2的處理程序都會被調用。當然listener1和listener2必須都是已實現接口方法的類。

3.被監聽的對象也可以是實現了方法的接口

exam.addListener(

new PropertyListener(){

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

public void propertyChange(PropertyEvent event){

...

}

);

這種方法在實際編程中非常方便。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣威市| 太仓市| 永安市| 宜宾市| 体育| 余庆县| 上栗县| 永年县| 崇阳县| 稷山县| 衡山县| 台南县| 进贤县| 铜梁县| 筠连县| 正阳县| 乌拉特中旗| 安新县| 雅安市| 万州区| 桃园县| 宣化县| 吉木萨尔县| 正蓝旗| 吴桥县| 宜兰市| 阿拉善右旗| 萝北县| 星座| 安宁市| 揭西县| 莱芜市| 徐州市| 新昌县| 宁晋县| 汝阳县| 博客| 三门县| 永福县| 麻栗坡县| 玉山县|