單元13 常用Swing組件的使用_第1頁
單元13 常用Swing組件的使用_第2頁
單元13 常用Swing組件的使用_第3頁
單元13 常用Swing組件的使用_第4頁
單元13 常用Swing組件的使用_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

單元13常用Swing組件的使用單元目標(biāo)油耗計(jì)算程序設(shè)計(jì)了解工具包AWT、工具包SWING的使用方法掌握J(rèn)Label、JTextField>JButton類的使用方法掌握常見Swing組件的特點(diǎn)學(xué)習(xí)任務(wù)任務(wù)描述用戶在制定的區(qū)域輸入加油錢數(shù),汽車跑的公里數(shù),和汽油的價(jià)格,單擊“計(jì)算”按鈕,計(jì)算顯示百公里油耗。計(jì)算公式為:百公里油耗(升)=加油錢數(shù)/汽油的價(jià)格/汽車跑的公里數(shù)*100。運(yùn)行結(jié)果知識(shí)準(zhǔn)備Java對(duì)GUI的支持包括基本控件、界面容器、事件機(jī)制、布局設(shè)計(jì)、圖形和圖像等,并提供了大量的類來實(shí)現(xiàn)界面設(shè)計(jì)??梢詫?shí)現(xiàn)圖形界面的主要有AWT工具集和Swing工具集。油耗計(jì)算程序設(shè)計(jì)13.1抽象窗口工具包(AWT) 油耗計(jì)算程序設(shè)計(jì)AWT是AbstractWindowToolkit的縮寫,稱為抽象窗口工具集,,是Java基礎(chǔ)類的一部分。AWT提供了構(gòu)建用戶界面的組件,例如菜單、按鈕、文本框、對(duì)話框、復(fù)選框等,可以根據(jù)圖形界面組件的輸入實(shí)現(xiàn)事件處理。此外,AWT允許繪制圖形、處理圖像、控制用戶界面的布局、字體顯示以及提供利用本地剪貼板實(shí)現(xiàn)數(shù)據(jù)傳送類等具有輔助性質(zhì)的類,AWT中類與類之間的關(guān)系如圖4-1所示,由Component類的子類或間接子類創(chuàng)建的對(duì)象稱為一個(gè)組件(又稱控件)。Java把由Container的子類或間接子類創(chuàng)建的對(duì)象稱為一個(gè)容器,可以把組建添加到容器中。圖4-1AWT類體系結(jié)構(gòu)由于AWT屬于重量級(jí)組件,消耗資源比較多、不同操作系統(tǒng)中外觀也會(huì)有所不同,而且其功能受限于本地組件。為了克服這些缺點(diǎn),Java在AWT基礎(chǔ)上,又提供了Swing組件。13.2Swing組件簡介Swing組件由,是內(nèi)容豐富、功能強(qiáng)大的輕量級(jí)組件。設(shè)計(jì)與AWT的設(shè)計(jì)不同,與顯示和事件有關(guān)的許多處理工作都由Java編寫的UI類來完成。輕量級(jí)組件占用資源較少,效率較高,顯示外觀與平臺(tái)無關(guān),功能更強(qiáng)更靈活。Swing是純Java語言實(shí)現(xiàn)的,并不依賴本地的工作平臺(tái)。Swing具有和AWT同性質(zhì)的組件,如按鈕等。從命名的角度看,Swing組件都是第一個(gè)字母標(biāo)有一個(gè)“J”,比如AWT按鈕組件命名為Button,而Swing的按鈕組件命名為JButton,見圖4-1oSwing還定義了其他具體應(yīng)用的組件,如樹組件、表組件和列表組件等?!拘≈R(shí)】Swing組件與AWT組件的區(qū)別:可以讓用戶定義組件的外觀,AWT組件的外觀取決于本地操作系統(tǒng)。具有良好的擴(kuò)展性,用戶可以擴(kuò)展或定義組件,AWT的擴(kuò)展性較差。AWT組件仍被支持,由于它受到本身?xiàng)l件的限制,在GUI用戶界面組件應(yīng)用范圍減少。Swing組件在圖形用戶界面領(lǐng)域中應(yīng)用更加廣泛。但著并不意味著AWT集被Swing集完全取代。Swing集只是基于AWT構(gòu)架之上,提供更加強(qiáng)大的GUI組件而已。13.3Jcomponent組件JComponent繼承自JComponet類的輕量級(jí)組件也都是容器。需要注意的是,不可以把組件直接添加到Swing窗體中,應(yīng)當(dāng)把組件添加到Swing窗體所包含的一個(gè)稱為內(nèi)容面板的容器中。在Swing窗體的內(nèi)容面板中,盡量只使用輕量組件,否則可能會(huì)出現(xiàn)預(yù)想不到的問題。Swing窗體通過調(diào)用publicContainergetContentPane()方法得到它的內(nèi)容面板。13.4Jframe組件圖4-1Swing組件結(jié)構(gòu)圖【實(shí)例4-1】演示Swing組件的用法。【1源代碼例4-1】提示:JFrame類的用法有兩種,一種是直接創(chuàng)建其對(duì)象并使用,另一種方法是繼承JFrame類,創(chuàng)建其子類,然后再創(chuàng)建并使用其子類的對(duì)象。大家要注意Swing組件和AWT組件外觀上的差異。示例的核心代碼如下所示,完整代碼請(qǐng)從課程資源庫或教材配套光盤獲取。classMyJWindowextendsJFrame{//繼承使用 一MyJWindow(){ yj?1f油耗計(jì)算程序設(shè)計(jì)JButtonbtn=newJButton("輕組件按鈕)JTextAreatxt=newJTextArea("輕組件”,20,20);*5)主類定義如下,其中directUse。表示直接使用JFrame類,inheritUse。表示繼承使用JFrame類,兩個(gè)方法都可以顯示窗口,但一次只能使用一個(gè)。publicclassExample4_2{〃直接使用staticvoiddirectUse(){JButtonbtn=newJButton("輕組件按鈕)JTextAreatxt=newJTextArea。'輕組件”,20,20);JFramejfrm=newJFrame("根窗體)vA油耗計(jì)算程序設(shè)計(jì)13.5swing的其他常用組件13Jlabel組件標(biāo)簽組件是用于顯示文本信息、或圖標(biāo)、或二者兼而有之。JLabel組件不會(huì)對(duì)用戶的輸入發(fā)生反應(yīng),即,對(duì)JLabel組件不能編輯。標(biāo)簽組件可以將顯示內(nèi)容垂直或水平顯示,通常默認(rèn)文本信息的顯示狀態(tài)為水平。而圖標(biāo)的顯示狀態(tài)為垂直。標(biāo)簽組件一般起到提示作用。13JTextField組件用于創(chuàng)建文本框。文本框是用來接受用的單行文本信息輸入的區(qū)域。通常文本框用于接受用戶信息或其他文本信息的輸入。當(dāng)用戶輸入文本信息后,如果為JTextField對(duì)象添加事件處理,按回車鍵會(huì)激發(fā)一定的動(dòng)作。JPasswordField是JTextField的子類,是一種特殊的文本框,也是用來接受單行文本信息的輸入的區(qū)域,但會(huì)用回顯字符串代替輸入的文本信息。因此,JPasswordField組件也稱為密碼文本框。JPasswordField的默認(rèn)的回顯字符是用戶可以自行設(shè)置回顯字符。13JTextArea組件JTextArea組件是文本區(qū)組件。它與JTextField一樣能接受文本信息的輸入和顯示。但是與JTextField組件不同的是,JTextArea對(duì)象可以多行輸入與顯示,突破了JTextField的單行的限制。但是,如果文本信息的行數(shù)超過文本區(qū)限定的行數(shù),超出的文本信息不能顯示。為了解決這個(gè)問題,可以借助JScrollPane滾動(dòng)窗格組件。將文本區(qū)放置到滾動(dòng)窗格中,就可以實(shí)現(xiàn)超出文本信息的滾動(dòng)輸出。類似的程序代碼如:newJScrollPane(JTextArea文本區(qū)對(duì)象)。13JButton組件JButton是用來創(chuàng)建命令按鈕。JButton對(duì)象具有這樣的功能:當(dāng)用戶按下命令按鈕,會(huì)激發(fā)一定的動(dòng)作。JButton創(chuàng)建的按鈕可以具有圖標(biāo)和文本信息的內(nèi)容,通過它們可以有效地提示及幫助用戶操作。13JCheckBox組件可以用來創(chuàng)建具有文本和圖標(biāo)的復(fù)選框。這種復(fù)選框具有來“選中”或“取消選中”狀態(tài),可以通過用戶的選擇來實(shí)現(xiàn)。通常,用多個(gè)復(fù)選框作為一組來表示多種組合條件,用戶可以同時(shí)選擇多個(gè)復(fù)選框。JRadioButton組件可以用來創(chuàng)建具有文本和圖標(biāo)的單選按鈕,和JCheckBox組件一樣,可以表示“選中”或“取消選中”狀態(tài)??梢远x一個(gè)或多個(gè)單選按鈕添加到一個(gè)ButtonGroup按鈕組作為整體處理,只不過在任何情況下,只有一個(gè)單選按鈕能處于“選中”狀態(tài),其他單選按鈕處于“非選中”狀態(tài)中。一般,定義多個(gè)單選按鈕來表示多個(gè)條件選擇一種的情況。13JcomboBox組件JComboBox組件用來創(chuàng)建組合框?qū)ο?。一般,根?jù)組合框是否可編輯的狀態(tài),可以將組合框分成兩種常見的外觀。可編輯狀態(tài)外觀是視為文本框和下拉列表的組合,不可編輯狀態(tài)的外觀可視為按鈕和下拉列表的組合。在按鈕或文本框的右邊有一個(gè)帶有三角符號(hào)的下拉按鈕。用戶可以點(diǎn)擊該下拉按鈕,可以出現(xiàn)一個(gè)內(nèi)容列表。這也是組合框的得名。組合框通常用于從列表的“多個(gè)項(xiàng)目中選擇一個(gè)”的操作。13JList組件JList組件用于定義列表,允許用戶選擇一個(gè)或多個(gè)項(xiàng)目。與JTextArea類似,JList本身不支持滾動(dòng)功能,如果要顯示超出顯示范圍的項(xiàng)目。任務(wù)實(shí)施.實(shí)現(xiàn)思路定義一個(gè)油耗計(jì)算器窗口類,繼承自窗體類JFrame,并實(shí)現(xiàn)ActionListener接口。窗口中通過JTextField類添加三個(gè)文本條,通過JButton類添加計(jì)算按鈕,通過JLabel類添加標(biāo)簽顯示計(jì)算結(jié)果。通過實(shí)現(xiàn)ActionListener接口的actionPerformed方法響應(yīng)用戶點(diǎn)擊按鈕的操作。(1)設(shè)計(jì)油耗計(jì)算器窗口(2)定義油耗計(jì)算器窗口類的構(gòu)造方法(3)定義actionPerformed單擊動(dòng)作處理方法(4)定義main主方法,創(chuàng)建對(duì)象并進(jìn)行測試.程序代碼 e油耗計(jì)算程序設(shè)計(jì)publicGasConsumption(){//窗口界面構(gòu)建代碼Containercon=getContentPane();上次加油金額(元)”));usedMoney=newJTextField(H200n);runKm=newJTextField("500n);calculate=newJButton("計(jì)算)gasConsumption=newJLabel();//設(shè)置窗體的標(biāo)題、大小、可見性及關(guān)閉動(dòng)作serntle("油耗計(jì)算器)setSize(340,260);setVisible(true);)//計(jì)算按鈕點(diǎn)擊后執(zhí)行的油耗計(jì)算代碼publicvoidactionPerformed(ActionEvente){floatfGas=fMoney/fPrice/fKm*100;}任務(wù)拓展Swing組件中除了包括上述組件外,還有一些其他組件,下面進(jìn)行部分講解。JDiaIog常見構(gòu)造方法:JDialogQ創(chuàng)建一個(gè)沒有標(biāo)題并且沒有指定Frame所有者的無模式對(duì)話框。JDialog(Frameowner,String世Ie)創(chuàng)建一個(gè)具有指定標(biāo)題和指定所有者窗體的無模式對(duì)話框。JDialog(Frameowner,booleanmodal)創(chuàng)建一個(gè)沒有標(biāo)題但有指定所有者Frame的有模式或無模式對(duì)話框。JDialog(Dialogowner,Stringtitle)創(chuàng)建一個(gè)具有指定標(biāo)題和指定所有者對(duì)話框的無模式對(duì)話框。JDialog(Dialogowner,booleanmodal)創(chuàng)建一個(gè)沒有標(biāo)題但有指定所有者對(duì)話框的有模式或無模式對(duì)話框。使用時(shí)和JFrame類似,不可以把組件直接添加到JDialog中,JDialog也含有一個(gè)內(nèi)容面板,應(yīng)當(dāng)把組件添加到內(nèi)容面板中。JPaneIJPanel組件定義的面板實(shí)際上是一種容器組件,用來容納各種其他輕量級(jí)的組件。此外,用戶還可以用這種面板容器繪制圖形?!緦?shí)例4-2】演示JPanel作為畫布的用法?!尽丛创a例4-2】classMyCanvasextendsJPanel{ r〃publicvoidpaintComponent(Graphicsg){ 油耗計(jì)算程序設(shè)計(jì))JScroIIPane滾動(dòng)窗口JScrollPane可以把一個(gè)組件放到一個(gè)滾動(dòng)窗口中,然后通過滾動(dòng)條來觀察這些組件?!緦?shí)例4-3】演示JScrollPane的使用方法?!綫源代碼例4-3】提示:本程序顯示一窗口,窗口中包含一個(gè)文本區(qū)域,如果輸入的文字超出行、列顯示范圍,則自動(dòng)顯示水平和垂直的滾動(dòng)條。JButtonbtn=newJButton(Hokn);油耗計(jì)算程序設(shè)計(jì)JTextAreatxt=newJTextArea(10,20);油耗計(jì)算程序設(shè)計(jì)JScrollPanescroll=newJScrollPane(txt);Containercon=getContentPane();JSpIitPaneJSplitPane拆分窗口:拆分窗口就是被分成兩部分的窗口,有水平拆分和垂直拆分兩種。構(gòu)造方法:JSplitPane(intnewOrientation,booleannewContinuousLayout,ComponentnewLeftComponent,ComponentnewRightComponent);JSplitPane(intnewOrientation,ComponentnewLeftComponent,ComponentnewRightComponent);newOrientation取值:JSplitPane.HORIZONTAL_SPLITorJSplitPane.VERTICAL_SPLIT;newContinuousLayout表示拆分線移動(dòng)時(shí)組件是否連續(xù)變化;newLeftComponent,newRightComponent表示窗口中的兩個(gè)組件【實(shí)例4-4】演示如何用JSplitPane拆分窗口?!綤、扁代碼例4-41JSplitPanesplit_two=newContainercon=getContentPane(); F-圖4-5拆分窗口示例 V 油耗計(jì)算程序設(shè)計(jì)JInternaIFrame內(nèi)部窗體JlnternalFrame用于在一個(gè)主窗口內(nèi)顯示一個(gè)或多個(gè)子窗口。每個(gè)子窗口都可以拖動(dòng)、關(guān)閉、變成圖標(biāo)、調(diào)整大小、標(biāo)題顯示和支持菜單欄。使用時(shí),需要先將子窗口對(duì)象添加到JDesktopPane中,再將JDesktopPane對(duì)象添力口到主窗口的內(nèi)容面板中。子窗口默認(rèn)不可見,需要設(shè)置可見性和大小。構(gòu)造方法:publicJlnternalFrame(Stringtitle,booleanresizable,booleanclosable,booleanmaximizable,booleaniconifiable)【實(shí)例4-5】演示內(nèi)部窗體JlnternalFrame的使用方法。源代碼例4-5】Containercon=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論