java事件编程_java基础 ---Swing事件编程
java基礎(chǔ) ---Swing事件編程
GUI的設(shè)計(jì)就剩個(gè)菜單組建,這個(gè)組件也是想當(dāng)于容器套容器,在設(shè)計(jì)方面沒有什么難度,主要是一些事件的響應(yīng)。還有另一種事件的監(jiān)聽方式,也就是適配器監(jiān)聽方法。
1、菜單
要設(shè)計(jì)一個(gè)菜單那么有三大組件是不可或缺的。即JMenuBar、JMenu、JmenuItem。
(1)JMenuBar組件的功能是用來(lái)擺入JMenu組件.當(dāng)我們建立完許多的JMenu組件后,需要通過(guò)JMenuBar組件來(lái)將JMenu組件加入到窗口中.雖然我們由下表中看出JMenuBar組件只有一種構(gòu)造方式,但是它對(duì)于構(gòu)造一個(gè)菜單來(lái)說(shuō)是個(gè)不可缺少的組件.
JMenuBar構(gòu)造函數(shù):
JMenuBar():建立一個(gè)新的JMenuBar;
由于構(gòu)造一個(gè)空的JMenuBar然后設(shè)置到窗口上對(duì)于窗口來(lái)說(shuō)是沒有意義的,因此JMenuBar需要結(jié)合至少一個(gè)以上的JMenu組件才會(huì)在畫面上顯現(xiàn)出視覺的效果。
(2)JMenu組件是用來(lái)存放和整合JMenuItem的組件,這個(gè)組件也是在構(gòu)成一個(gè)菜單中不可或缺的組件之一.JMenu可以是單一層次的結(jié)構(gòu)也可以是一個(gè)層次式的結(jié)構(gòu),要使用何種形式的結(jié)構(gòu)取決于界面設(shè)計(jì)上的需要而定。
(3)JMenuItem繼承AbstractButton類,因此JMenuItem具有許多AbstractButton的特性,也可以說(shuō)JMenuItem是一種特殊的Button,所以JMenuItem支持許多在Button中好用的功能,例如加入圖標(biāo)文件或是當(dāng)我們?cè)诓藛沃羞x擇某一項(xiàng)JMenuItem時(shí)就如同按下按鈕的操作一樣觸發(fā)ActionEvent,通過(guò)ActionEvent的機(jī)制我們就能針對(duì)不同的JMenuItem編寫其對(duì)應(yīng)的程序區(qū)段。
2、Adapter事件監(jiān)聽
適配器與標(biāo)準(zhǔn)事件處理的區(qū)別在于如果使用標(biāo)準(zhǔn)事件處理當(dāng)該監(jiān)聽器方法不只一個(gè)的時(shí)候,也需要把其中所有的方法都覆蓋進(jìn)程序代碼中,即使某些方法不需要使用。如果使用適配器可以只需要將用到的方法寫進(jìn)代碼即可。下面建立一個(gè)監(jiān)聽事件的類,當(dāng)window被關(guān)閉時(shí)則會(huì)響應(yīng)該時(shí)間。
class WindowProc extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
......
}
}
4、JavaBean 模式
今天的課堂作業(yè)就是對(duì)JavaBean這個(gè)種設(shè)計(jì)模式的應(yīng)用,有些同學(xué)認(rèn)為使用這種模式反而使程序更加煩瑣,不易理解。其實(shí)不然,雖然我們可以使用其他方式來(lái)完成今天這個(gè)作業(yè),也許更簡(jiǎn)單,但是javaBean是種設(shè)計(jì)理念,我們常說(shuō)的MVC方式,javabean就是簡(jiǎn)單的體現(xiàn)者。
我們這個(gè)程序建立了四個(gè)類:分別是StudentMain(界面和響應(yīng)事件的類)StudentScore(數(shù)據(jù)保存類)Compute(計(jì)算總分和平均分的類)Results(保存計(jì)算結(jié)果的類)。其中StudentScore和Results就是標(biāo)準(zhǔn)的JavaBean類。他們只有g(shù)et和set方法,用于其他類對(duì)他們進(jìn)行數(shù)據(jù)的讀取和存儲(chǔ)。
這里要注意一點(diǎn),當(dāng)我們使用JavaBean模式的時(shí)候,那么一定要傳遞一個(gè)該對(duì)象的引用以保持他們傳遞數(shù)據(jù)的一致性。什么意思呢,打個(gè)比方,現(xiàn)在我要在TestPass這個(gè)類里面調(diào)用Bean的一個(gè)set方法保存一個(gè)數(shù)據(jù),并在TestPass1這個(gè)類里面獲得該數(shù)據(jù)并加以計(jì)算。那么我們應(yīng)該這么做:
public class TestPass{
int a = 1;??//初始化a的值為1
public TestPass(){
test();
}
public void test(){
TestPass1 tp1 = new TestPass1();//創(chuàng)建TestPass1類的對(duì)象
Bean bean = new Bean();?//創(chuàng)建javabean類的對(duì)象
bean.set(a);???//將a屬性的值傳遞給javabean
tp1.change(bean);??//調(diào)用TestPass類的方法進(jìn)行數(shù)據(jù)操作,傳??????//遞當(dāng)前bean對(duì)象給該方法
System.out.println(bean.get());?//取得javabean里的值并輸出
}
public static void main(String [] args){
new TestPass();
}
}
class TestPass1{
public void change(Bean bean){
bean.set(bean.get()+10);?//獲得傳遞過(guò)來(lái)對(duì)象的屬性,該對(duì)象是???????//javabean類的實(shí)例,通過(guò)計(jì)算后將值
//通過(guò)set方法傳遞回javabean
}
}
class Bean{?????//標(biāo)準(zhǔn)javaBean模式,通過(guò)set和get方法接收??????//和傳遞數(shù)據(jù),在兩個(gè)類中起到中間件作用
int a1;
public void set(int a){
a1 = a;
}
public int get(){
return a1;
}
}
總結(jié)
以上是生活随笔為你收集整理的java事件编程_java基础 ---Swing事件编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java webmethod 参数_j
- 下一篇: java过滤器api_springboo