北國狼人的部落格
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-159 評論-114 文章-7 trackbacks-0
AWT和Swing
由于本人已經有了很多界面開發經驗,對于這塊不是重點,只列舉一些例子。
JSF和Web Start(jnlp+jar),將逐步替代Swing和Applet的地位。
圖形界面開發,步驟一定要記住。
1.選擇容器
2.設置布局管理器,Panel默認為Flow,Frame默認為Border
3.添加組件,可能是容器組件的多層嵌套
4.添加時間處理,add***Listener,并給出實現。
事件模型是重點.
import
java.util.
*
;
public
class
NumberSource
{
NumberListener listener
=
null
;
public
void
addNumberListener(NumberListener nl)
{
if
(listener
==
null
) listener
=
nl;
}
public
void
run()
{
for
(
long
i
=
1l
;i
<=
200000l
;i
++
)
{
if
(i
%
10000
==
0
)
{
NumberEvent ne
=
new
NumberEvent(
this
,(
int
)(i
/
10000
));
listener. print(ne);
}
}
}
public
static
void
main(String[] args)
{
NumberSource ns
=
new
NumberSource();
MyNumberListener ls
=
new
MyNumberListener();
ns.addNumberListener(ls);
ns.run();
}
}
class
NumberEvent
extends
EventObject
{
int
time;
public
NumberEvent(Object src,
int
time)
{
super
(src);
this
.time
=
time;
}
public
int
getTime()
{
return
time;
}
}
interface
NumberListener
extends
EventListener
{
void
print(NumberEvent ne);
}
class
MyNumberListener
implements
NumberListener
{
public
void
print(NumberEvent ne)
{
System.out.println(ne.getTime()
+
"
10000
"
);
}
}
主要部分有事件源,事件對象,該事件的監聽器接口,接口實現類。
事件源內部有一個事件監聽器接口類型的對象,因為它只關心在相應的事件處理方法,不關心具體類怎么實現的,也不關心具體類的其他屬性。
需要建立事件源與監聽器之間的聯系,通過add***Listener方法搭橋,然后在事件源fire的時候調用監聽器方法,得到響應和處理。
下面為實際的基于觀察者模式的事件驅動模型。Girl為事件源,如果有情緒波動,它會調用監聽她的監聽器方法,而由于Girl可以更換男友,那么監聽器的實現也會隨之變化。
import
java.util.
*
;
public
class
Girl
{
//
private ArrayList listeners=new ArrayList();
private
EmotionListener listener
=
null
;
private
String name;
private
int
day;
public
Girl (String lover)
{
this
.name
=
lover;
}
public
String getLover()
{
return
name; }
public
void
setEmotionListener(EmotionListener l)
throws
HeartOccupiedException
{
/**/
/*
if (listeners.size()<10){
listeners.add(l);
}
*/
if
(listener
==
null
)
{
listener
=
l;
System.out.println(
"
I have a Boy Friend
"
);
}
else
{
System.out.println(
"
I already have a bf
"
);
throw
new
HeartOccupiedException(
"
Go Away!
"
);
}
}
public
void
removeEmotionListener(EmotionListener l)
{
/**/
/*
if(listeners.contains(l)){
System.out.println("I can't live without you");
listeners.remove(l);
}
*/
if
(listener
==
l)
{
listener
=
null
;
System.out.println(
"
I can't live without you
"
);
}
}
public
void
run()
{
for
(day
=
1
;day
<=
10
;day
++
)
{
try
{
Thread.sleep(
1000
);
fire();
}
catch
(Exception e)
{}
}
}
private
void
fire ()
{
EmotionEvent evt
=
new
EmotionEvent(
this
);
if
(listener
==
null
)
{
System.out.println(
"
Being a single is lone.
"
);
return
;
}
if
(day
%
2
==
0
)
{
/**/
/*
Iterator it=listeners.iterator();
while(it.hasNext()){
EmotionListener l=(EmotionListener)it.next();
l.happy(evt);
}
*/
listener.happy(evt);
}
else
{
/**/
/*
Iterator it=listeners.iterator();
while(it.hasNext()){
EmotionListener l=(EmotionListener)it.next();
l.sad(evt);
}
*/
listener.sad(evt);
}
}
public
static
void
main(String[] args)
{
Girl girl
=
new
Girl(
"
Anna
"
);
//
Girl girl2=new Girl("Marry");
Boy boy1
=
new
Boy(
"
HuXinzhe
"
);
/**/
/*
Boy boy2=new Boy("LiuChunyang");
Boy boy3=new Boy("LiuXinfu");
Boy boy4=new Boy("ZhaoDekui");
Boy boy5=new Boy("ChenZongquan");
Boy boy6=new Boy("Jerry");
Boy boy7=new Boy("Larry");
Boy boy8=new Boy("George");
Boy boy9=new Boy("WangHaige");
Boy boy10=new Boy("CuiJixin");
*/
try
{
girl.setEmotionListener(boy1);
/**/
/*
girl.setEmotionListener(boy2);
girl.setEmotionListener(boy3);
girl.setEmotionListener(boy4);
girl.setEmotionListener(boy5);
girl.setEmotionListener(boy6);
girl.setEmotionListener(boy7);
girl.setEmotionListener(boy8);
girl.setEmotionListener(boy9);
girl.setEmotionListener(boy10);
*/
//
girl2.setEmotionListener(boy1);
//
girl.setEmotionListener(boy2);
}
catch
(HeartOccupiedException e)
{
System.out.println(e.getMessage());
}
girl.run();
girl.removeEmotionListener(boy1);
//
girl2.run();
//
girl2.removeEmotionListener(boy1);
}
}
class
EmotionEvent
extends
java.util.EventObject
{
public
EmotionEvent(Object src)
{
super
(src);
}
}
interface
EmotionListener
extends
java.util.EventListener
{
public
void
happy(EmotionEvent evt);
public
void
sad(EmotionEvent evt);
}
class
Boy
implements
EmotionListener
{
private
String name;
public
Boy(String name)
{
this
.name
=
name;}
public
void
happy(EmotionEvent evt)
{
String lover
=
((Girl)evt.getSource()).getLover();
System.out.println(name
+
"
said:
"
+
lover
+
"
, I am also happy
"
);
}
public
void
sad(EmotionEvent evt)
{
String lover
=
((Girl)evt.getSource()).getLover();
System.out.println(name
+
"
said:
"
+
lover
+
"
, take care, you make me sad too.
"
);
}
}
class
HeartOccupiedException
extends
Exception
{
public
HeartOccupiedException()
{
this
(
"
No reason
"
);
}
public
HeartOccupiedException(String mesg)
{
super
(mesg);
}
}
posted on 2005-12-11 21:15
北國狼人的BloG
閱讀(319)
評論(0)
編輯
收藏
所屬分類:
達內學習總結
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
反日行動從現在開始,從每個中國人,每個程序員做起!不用日本東西,不給日本人打工!!!
最后的指點
Struts中沒有例子的兩個標簽
Cannot retrieve mapping for action 之 問題解決
fontmanager.dll exception 問題解決 安裝IBM RSA Rational Software Architect 文鼎字體 要刪除
復習一下 SQL 排名問題
事務
JMS 使用
EJB工作原理 之 北國狼人 清晰講述
RMI工作原理 之 北國狼人的理解
<
2005年12月
>
日
一
二
三
四
五
六
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
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(33)
給我留言
查看公開留言
查看私人留言
隨筆分類
3D至尊寶(1)
人生各層面經驗積累(15)
關愛IT人士健康(15)
達內學習總結(42)
隨筆檔案
2018年11月 (2)
2012年3月 (1)
2011年8月 (1)
2011年1月 (1)
2010年12月 (2)
2010年8月 (1)
2010年6月 (3)
2010年5月 (3)
2010年4月 (11)
2010年3月 (8)
2010年2月 (4)
2010年1月 (4)
2009年12月 (6)
2009年11月 (1)
2009年10月 (3)
2009年9月 (3)
2009年8月 (3)
2009年6月 (1)
2009年5月 (1)
2009年4月 (1)
2009年1月 (1)
2008年12月 (1)
2008年11月 (3)
2008年10月 (1)
2008年8月 (4)
2008年6月 (2)
2008年5月 (3)
2008年3月 (1)
2008年2月 (1)
2008年1月 (2)
2007年12月 (2)
2007年10月 (3)
2007年9月 (1)
2006年11月 (1)
2006年9月 (1)
2006年8月 (3)
2006年7月 (2)
2006年6月 (1)
2006年5月 (1)
2006年4月 (5)
2006年3月 (7)
2006年2月 (7)
2006年1月 (12)
2005年12月 (8)
2005年11月 (19)
2005年10月 (9)
文章分類
3D至尊寶
Web技術和趨勢(1)
原創(1)
翻譯Java文章(2)
文章檔案
2006年10月 (1)
2005年10月 (3)
Java學習論壇
3D至尊寶
Java最牛網站
搜索
最新評論
1.?re: xsl:value-of select="." 什么意思?[未登錄]
ffff
--ff
2.?re: 理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On
好文章
--godtree
3.?re: 理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On[未登錄]
好文章,收了,謝謝博主
--thinker
4.?re: 高效產生一組不重復的隨機數
要是要求產生的隨機數量特別大怎么辦啊
--ll
5.?re: AS3 位操作比較快
“看完還不明白,就不要搞計算機了。”
就沖著此話,為樓主的優越感深表擔憂
每個人都是從新手過來的,樓主發帖如果是為了分享,我很敬佩,如果是為了和裝13,那我只能笑笑
--調整心態啊樓主
閱讀排行榜
1.?RCP開發,如何解決 org.eclipse.core.runtime.CoreException: Plug-in TD was unable to load class td.app.Application.(14352)
2.?mysql_install_db --defaults-file=/etc/my.cnf --user=mysql(8188)
3.?IWAB0014E Unexpected exception occured 該死的問題,就是因為Eclipse + WTP 需要先配置Server,再生成webservice(6957)
4.?理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On(6492)
5.?J2ME 網絡連接(HTTP) 模擬器 WTK(4981)
評論排行榜
1.?RCP開發,如何解決 org.eclipse.core.runtime.CoreException: Plug-in TD was unable to load class td.app.Application.(9)
2.?給自己的軟件加保險,用java獲取硬盤序列號(8)
3.?不要寫垃圾代碼!!!(8)
4.?反日行動從現在開始,從每個中國人,每個程序員做起!不用日本東西,不給日本人打工!!!(8)
5.?IWAB0014E Unexpected exception occured 該死的問題,就是因為Eclipse + WTP 需要先配置Server,再生成webservice(7)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 北國狼人的BloG
主站蜘蛛池模板:
国产亚洲欧洲精品
|
免费三级毛片电影片
|
亚洲国产精品人人做人人爽
|
亚洲三级在线观看
|
成人毛片18女人毛片免费视频未
|
久久青青草原亚洲av无码app
|
日本卡1卡2卡三卡免费
|
亚洲成A人片在线观看WWW
|
最近2019中文免费字幕在线观看
|
亚洲欧洲日产国码无码久久99
|
亚洲一级片免费看
|
亚洲国产AV无码专区亚洲AV
|
很黄很污的网站免费
|
久久精品蜜芽亚洲国产AV
|
成年人免费的视频
|
亚洲国产成人精品无码区二本
|
免费看a级黄色片
|
国产亚洲综合精品一区二区三区
|
亚洲国产精品无码久久青草
|
中文字幕一区二区三区免费视频
|
亚洲乱码国产一区三区
|
91视频免费网址
|
亚洲真人无码永久在线观看
|
吃奶摸下高潮60分钟免费视频
|
国产精品高清免费网站
|
亚洲今日精彩视频
|
免费看无码自慰一区二区
|
国产91成人精品亚洲精品
|
亚洲乱码日产一区三区
|
免费h片在线观看网址最新
|
亚洲中文无码卡通动漫野外
|
亚洲国产专区一区
|
久久精品无码专区免费青青
|
亚洲色成人网站WWW永久四虎
|
亚洲色偷偷综合亚洲AV伊人
|
99蜜桃在线观看免费视频网站
|
亚洲kkk4444在线观看
|
国产亚洲日韩在线三区
|
国产精品1024永久免费视频
|
日本免费人成黄页在线观看视频
|
xxxxx做受大片在线观看免费
|