北國狼人的部落格
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(8189)
3.?IWAB0014E Unexpected exception occured 該死的問題,就是因為Eclipse + WTP 需要先配置Server,再生成webservice(6957)
4.?理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On(6494)
5.?J2ME 網絡連接(HTTP) 模擬器 WTK(4982)
評論排行榜
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
主站蜘蛛池模板:
成人毛片免费网站
|
无码日韩人妻av一区免费
|
色欲国产麻豆一精品一AV一免费
|
久久精品国产亚洲
|
亚洲免费精彩视频在线观看
|
亚洲日产2021三区在线
|
亚洲AV性色在线观看
|
j8又粗又长又硬又爽免费视频
|
国产日韩AV免费无码一区二区
|
免费视频成人国产精品网站
|
五月天婷婷免费视频
|
在线观看肉片AV网站免费
|
国产乱子精品免费视观看片
|
全免费a级毛片免费看不卡
|
人禽杂交18禁网站免费
|
亚洲国产成人五月综合网
|
亚洲精品乱码久久久久久中文字幕
|
日韩精品一区二区亚洲AV观看
|
亚洲伊人久久大香线蕉AV
|
一区二区三区在线观看免费
|
久久免费区一区二区三波多野
|
欧美最猛性xxxxx免费
|
亚洲国产V高清在线观看
|
亚洲人成在线影院
|
亚洲风情亚Aⅴ在线发布
|
免费看黄的成人APP
|
久久久久久久久免费看无码
|
亚洲国产精品一区二区九九
|
91亚洲精品第一综合不卡播放
|
亚洲另类无码专区丝袜
|
你是我的城池营垒免费观看完整版
|
国产精品成人观看视频免费
|
亚洲国产综合精品中文字幕
|
国产91精品一区二区麻豆亚洲
|
亚洲国产老鸭窝一区二区三区
|
一区二区3区免费视频
|
18禁美女裸体免费网站
|
91av在线免费视频
|
国产中文字幕免费
|
亚洲国产午夜电影在线入口
|
亚洲高清免费视频
|