資源描述:
《基于swing的圖形用戶界面設(shè)計(jì)方案》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第10章基于Swing的圖形用戶界面設(shè)計(jì)?本章導(dǎo)讀☆A(yù)WT組件與SWING組件☆JFrame窗體、菜單組件、布局設(shè)計(jì)☆中間容器、文本組件☆按鈕與標(biāo)簽組件、復(fù)選框與單選按鈕組件☆列表組件、表格組件、樹(shù)組件和進(jìn)度條組件☆窗口事件、鼠標(biāo)事件、焦點(diǎn)事件和鍵盤事件☆對(duì)話框☆A(yù)WT線程與計(jì)時(shí)器☆MVC設(shè)計(jì)模式☆發(fā)布應(yīng)用程序110.1AWT組件與SWING組件概述Java早期進(jìn)行用戶界面設(shè)計(jì)時(shí),使用java.awt包中提供的類?!癆WT”就是AbstracWindowToolkit(抽象窗口工具包)的縮寫。Java2(JDK1.2)推出之后,增加了一個(gè)新的jav
2、ax.swing包,該包提供了功能更為強(qiáng)大的用來(lái)設(shè)計(jì)GUI界面的類。Java早期的java.awt包中的類創(chuàng)建的組件習(xí)慣上稱為重組件。例如,當(dāng)用java.awt包中的Button類創(chuàng)建一個(gè)按鈕組件時(shí),都有一個(gè)相應(yīng)的本地組件在為它工作(稱為它的同位體)。javax.swing包為我們提供了更加豐富的、功能強(qiáng)大的組件,稱為SWING組件,其中大部分組件是輕組件,沒(méi)有同位體。SWING組件的輕組件在設(shè)計(jì)上和AWT完全不同,輕組件把與顯示組件有關(guān)的許多工作和處理組件事件的工作交給相應(yīng)的UI代表來(lái)完成。這些UI代表是用Java語(yǔ)言編寫的類,這些類被增加到Ja
3、va的運(yùn)行環(huán)境中,因此組件的外觀不依賴平臺(tái),不僅在不同平臺(tái)上的外觀是相同的,而且較組件有更高的性能。如果Java運(yùn)行環(huán)境低于1.2版本,就不能運(yùn)行含有SWING組件的程序。2圖10.1JComponent類的部分子類以及JFrame類和JDialog類3容器類(Container)和組件類(Component)Java把由Component類的子類或間接子類創(chuàng)建的對(duì)象稱為一個(gè)組件;把由Container的子類或間接子類創(chuàng)建的對(duì)象稱為一個(gè)容器?!艨梢韵蛉萜魈砑咏M件。Container類提供了一個(gè)public方法add(),一個(gè)容器可以調(diào)用這個(gè)方法將組
4、件添加到該容器中?!粽{(diào)用removeAll()方法可以移掉容器中的全部組件,調(diào)用remove(Componentc)方法可以移掉容器中參數(shù)指定的組件?!裘慨?dāng)容器添加新的組件或移掉組件時(shí),應(yīng)該讓容器調(diào)用validate()方法,以保證容器中的組件能正確顯示出來(lái)。容器本身也是一個(gè)組件,因此可以把一個(gè)容器添加到另一個(gè)容器中實(shí)現(xiàn)容器的嵌套。javax.swing包中有4個(gè)最重要的類JApplet,JFrame,JDialog和JComponent。注:JComponent類的子類都是輕組件,JComponent類是java.awt包中Container類的
5、子類,因此所有的輕組件也都是容器。而JFrame、JApplet、JDialog都是重組件,即有同位體的組件,這樣窗口(JFrame)、對(duì)話框(JDialog)、小應(yīng)用程序(JavaApplet)可以和操作系統(tǒng)交互信息。輕組件必須在這些容器中繪制自己,習(xí)慣上稱這些容器為SWING的底層容器。410.2JFrame窗體javax.swing包中的JFrame類是java.awt包中Frame類的子類,因此JFrame類其子類創(chuàng)建的對(duì)象是窗體。當(dāng)應(yīng)用程序需要一個(gè)窗口時(shí),可使用JFrame或其子類創(chuàng)建一個(gè)對(duì)象。窗口默認(rèn)地被系統(tǒng)添加到顯示器屏幕上,因此不允
6、許將一個(gè)窗口添加到另一個(gè)容器中。Frame類常用方法如下:◆JFrame()創(chuàng)建一個(gè)無(wú)標(biāo)題的窗口。◆JFrame(Strings)創(chuàng)建一個(gè)標(biāo)題為s的窗口?!魀ublicvoidsetBounds(inta,intb,intwidth,intheight)設(shè)置出現(xiàn)在屏幕上時(shí)的初始位置為(a,b),即距屏幕左面a個(gè)像素、距屏幕上方b個(gè)像素;窗口的寬是width,高是height?!魀ublicvoidsetSize(intwidth,intheight)設(shè)置窗口的大小,在屏幕出現(xiàn)默認(rèn)位置是(0,0)?!魀ublicvoidsetVisible(bool
7、eanb)設(shè)置窗口是可見(jiàn)還是不可見(jiàn),窗口默認(rèn)是不可見(jiàn)的。◆publicvoidsetResizable(booleanb)設(shè)置窗口是否可調(diào)整大小,窗口默認(rèn)是可調(diào)整大小的。◆publicvoidsetDefaultCloseOperation(intoperation)該方法用來(lái)設(shè)置單擊窗體右上角的關(guān)閉圖標(biāo)后,程序會(huì)做出怎樣的處理。其中的參數(shù)operation取下列有效值:1)DO_NOTHING_ON_CLOSE什么也不做2)HIDE_ON_CLOSE隱藏當(dāng)前窗口3)DISPOSE_ON_CLOSE隱藏當(dāng)前窗口,并釋放窗體占有的其他資源4)EXIT
8、_ON_CLOSE結(jié)束窗體所在的應(yīng)用程序這4個(gè)常量都是JFrame類中的static常量,單擊關(guān)閉圖標(biāo)后,程序根據(jù)oper