陳亮
ChenLiang
JAVA自定義事件監聽完整例子---sunfruit[轉]
很多介紹用戶自定義事件都沒有例子,或是例子不全,下面寫了一個完整的例子,并寫入了注釋以便參考,完整的實例源代碼如下:
package
demo;
import
java.util.EventObject;
/** */
/**
* Title: 事件處理類,繼承了事件基類
* Description:
* Copyright: Copyright (c) 2005
* Company: cuijiang
*
@author
not attributable
*
@version
1.0
*/
public
class
DemoEvent
extends
EventObject
{
private
Object obj;
private
String sName;
public
DemoEvent(Object source,String sName)
{
super
(source);
obj
=
source;
this
.sName
=
sName;
}
public
Object getSource()
{
return
obj;
}
public
void
say()
{
System.out.println(
"
這個是 say 方法
"
);
}
public
String getName()
{
return
sName;
}
}
package
demo;
import
java.util.EventListener;
/** */
/**
* Title: 監聽器接口
* Description:
* Copyright: Copyright (c) 2005
* Company: cuijiang
*
@author
not attributable
*
@version
1.0
*/
public
interface
DemoListener
extends
EventListener
{
public
void
demoEvent(DemoEvent dm);
}
package
demo;
import
java.util.
*
;
/** */
/**
* Title: 使用事件的類
* Description: 該類實現了監聽器的添加和監聽器方法的執行,并且實現了由于屬性的改變而執行事件
* Description: 在添加、刪除、執行監聽器的時候都要注意同步問題
* Copyright: Copyright (c) 2005
* Company: cuijiang
*
@author
not attributable
*
@version
1.0
*/
public
class
DemoSource
{
private
Vector repository
=
new
Vector();
private
DemoListener dl;
private
String sName
=
""
;
public
DemoSource()
{
}
//
注冊監聽器,如果這里沒有使用Vector而是使用ArrayList那么要注意同步問題
public
void
addDemoListener(DemoListener dl)
{
repository.addElement(dl);
//
這步要注意同步問題
}
//
如果這里沒有使用Vector而是使用ArrayList那么要注意同步問題
public
void
notifyDemoEvent(DemoEvent event)
{
Enumeration
enum
=
repository.elements();
//
這步要注意同步問題
while
(
enum
.hasMoreElements())
{
dl
=
(DemoListener)
enum
.nextElement();
dl.demoEvent(event);
}
}
//
刪除監聽器,如果這里沒有使用Vector而是使用ArrayList那么要注意同步問題
public
void
removeDemoListener(DemoListener dl)
{
repository.remove(dl);
//
這步要注意同步問題
}
/** */
/**
* 設置屬性
*
@param
str1 String
*/
public
void
setName(String str1)
{
boolean
bool
=
false
;
if
(str1
==
null
&&
sName
!=
null
) bool
=
true
;
else
if
(str1
!=
null
&&
sName
==
null
) bool
=
true
;
else
if
(
!
sName.equals(str1)) bool
=
true
;
this
.sName
=
str1;
//
如果改變則執行事件
if
(bool) notifyDemoEvent(
new
DemoEvent(
this
,sName));
}
public
String getName()
{
return
sName;
}
}
package
demo;
import
java.lang.Thread;
/** */
/**
* Title: 測試類
* Description: 測試了由于改變屬性而引起的事件發生
* Copyright: Copyright (c) 2005
* Company: cuijiang
*
@author
not attributable
*
@version
1.0
*/
public
class
TestDemo
implements
DemoListener
{
private
DemoSource ds;
public
TestDemo()
{
ds
=
new
DemoSource();
ds.addDemoListener(
this
);
System.out.println(
"
添加監聽器完畢
"
);
try
{
Thread.sleep(
3000
);
//
改變屬性,觸發事件
ds.setName(
"
改變屬性,觸發事件
"
);
}
catch
(InterruptedException ex)
{
ex.printStackTrace();
}
ds.addDemoListener(
this
);
System.out.println(
"
添加監聽器完畢2
"
);
try
{
Thread.sleep(
3000
);
//
改變屬性,觸發事件
ds.setName(
"
改變屬性,觸發事件2
"
);
}
catch
(InterruptedException ex)
{
ex.printStackTrace();
}
ds.removeDemoListener(
this
);
System.out.println(
"
添加監聽器完畢3
"
);
try
{
Thread.sleep(
3000
);
//
改變屬性,觸發事件
ds.setName(
"
改變屬性,觸發事件3
"
);
}
catch
(InterruptedException ex)
{
ex.printStackTrace();
}
}
public
static
void
main(String args[])
{
new
TestDemo();
}
/** */
/**
* demoEvent
*
*
@param
dm DemoEvent
* @todo Implement this test.DemoListener method
*/
public
void
demoEvent(DemoEvent dm)
{
System.out.println(
"
事件處理方法
"
);
System.out.println(dm.getName());
dm.say();
}
}
posted on 2009-06-06 00:22
陳亮
閱讀(2707)
評論(0)
編輯
收藏
所屬分類:
Java
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
英文系統上使用ssh2+mysql亂碼問題解決
Applet 在web項目中顯示ClassNotFoundException的解決辦法
JAVA自定義事件監聽完整例子---sunfruit[轉]
Javascript的IE和Firefox兼容性匯編
用s:action實現jsp頁面導入action
在myeclipse上配置SVN
eclipse配置CVS實現遠程代碼管理
Struts2與FCKeditor上傳問題解決辦法
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
統計
隨筆 - 1
文章 - 7
評論 - 3
引用 - 0
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
文章分類
(8)
Java(8)
(rss)
Linux
(rss)
文章檔案
(8)
2013年4月 (1)
2012年8月 (1)
2009年6月 (1)
2009年4月 (2)
2008年12月 (3)
搜索
最新評論
1.?re: 用s:action實現jsp頁面導入action
是
--4
2.?re: Applet 在web項目中顯示ClassNotFoundException的解決辦法
評論內容較長,點擊標題查看
--Judy
3.?re: 用s:action實現jsp頁面導入action[未登錄]
謝謝
--joyce
Powered by:
BlogJava
Copyright © 陳亮
主站蜘蛛池模板:
最近中文字幕免费2019
|
美女视频黄a视频全免费网站色窝
|
免费精品国产自产拍在
|
亚洲国产精品一区二区久久
|
a级日本高清免费看
|
久久综合日韩亚洲精品色
|
国产精品免费大片
|
亚洲综合免费视频
|
性短视频在线观看免费不卡流畅
|
亚洲色欲www综合网
|
免费精品国偷自产在线在线
|
亚洲精品无播放器在线播放
|
亚洲国产精品免费观看
|
精品久久亚洲中文无码
|
成人黄页网站免费观看大全
|
精品女同一区二区三区免费播放
|
亚洲AV无码乱码国产麻豆穿越
|
亚洲神级电影国语版
|
91短视频免费在线观看
|
亚洲爆乳AAA无码专区
|
亚洲无码精品浪潮
|
日韩午夜理论免费TV影院
|
亚洲综合激情五月色一区
|
免费国产成人高清在线观看麻豆
|
亚洲色大成WWW亚洲女子
|
免费一级一片一毛片
|
a国产成人免费视频
|
亚洲伦理中文字幕
|
免费v片在线观看品善网
|
免费在线观看一级片
|
亚洲国产精品一区二区三区在线观看
|
西西人体44rt高清亚洲
|
日韩人妻无码精品久久免费一
|
亚洲AV色吊丝无码
|
亚洲国产成人久久一区WWW
|
久久狠狠躁免费观看
|
亚洲精品无码久久久久秋霞
|
久久夜色精品国产亚洲av
|
**一级毛片免费完整视
|
黄色大片免费网站
|
久久亚洲AV成人无码软件
|