- Java語言GUI程序設(shè)計(jì)
- 趙滿來
- 6586字
- 2019-12-06 14:22:06
2.5 幾個(gè)簡(jiǎn)單Swing GUI組件的設(shè)計(jì)
JDK的類庫為Java GUI程序的開發(fā)提供了十分豐富的類,可以滿足開發(fā)任何圖形用戶界面程序的需要。這些類都組織在javax.swing包及其子包中,訪問Java SE的API規(guī)范網(wǎng)站,可以找到這些包及其類和接口的說明文檔(見圖1.11)。閱讀API文檔是學(xué)習(xí)Java程序設(shè)計(jì)的重要途徑,API文檔也是編寫Java程序的重要工具。
NetBeans IDE的“組件面板”中分類列出了常用Swing GUI組件(見圖2.38),這些組件對(duì)應(yīng)了Swing庫中的相應(yīng)類。當(dāng)采用鼠標(biāo)單擊方式在窗體中創(chuàng)建一個(gè)組件時(shí),GUI構(gòu)建器就自動(dòng)生成了對(duì)應(yīng)類的一個(gè)對(duì)象。當(dāng)在屬性窗口中為選定組件設(shè)置屬性值時(shí),GUI構(gòu)建器就自動(dòng)生成調(diào)用組件對(duì)象相應(yīng)方法的Java語句改變?cè)搶傩灾怠1M管查看Swing包中類的API感覺每個(gè)類都比較復(fù)雜,但使用GUI構(gòu)建器以可視化方法使用它們時(shí),主要是通過設(shè)置各個(gè)組件的屬性設(shè)定它們?cè)贕UI中的表現(xiàn)。本節(jié)簡(jiǎn)要介紹本章前面使用過的組件屬性及其設(shè)置方法。

圖2.38 NetBeans IDE的“組件面板”中的GUI組件
2.5.1 程序窗口
通常,Swing GUI應(yīng)用程序的頂層窗口是一個(gè)幀(JFrame)對(duì)象,在本機(jī)操作系統(tǒng)中是以窗口的形式注冊(cè)的,具有許多熟悉的操作系統(tǒng)窗口的特性,如最小化/最大化、改變大小、移動(dòng)等。而它的修飾部件(標(biāo)題欄、圖標(biāo)和控制按鈕等)由程序所運(yùn)行的底層窗口系統(tǒng)繪制。JFrame是主要的頂層容器之一,有復(fù)雜的內(nèi)部結(jié)構(gòu)(見圖2.39),以后向窗口中添加的組件都置于內(nèi)容面板中。
在GUI構(gòu)建器的設(shè)計(jì)視圖下,屬性窗口中列出了所選窗體(例如UserLogin)的屬性,包括4個(gè)方面:defaultCloseOperation、title、其他屬性和輔助功能。通過設(shè)置這些屬性,可以配置窗口的外觀和一些行為。
1. defaultCloseOperation屬性
此屬性設(shè)置程序運(yùn)行時(shí)單擊窗口的“關(guān)閉”按鈕時(shí)的行為。單擊屬性窗口中該屬性右邊的下三角按鈕,出現(xiàn)4種選項(xiàng)(見圖2.40)。選擇HIDE則設(shè)置單擊該窗口的“關(guān)閉”按鈕時(shí),窗口隱藏起來;EXIT_ON_CLOSE則設(shè)置關(guān)閉窗口且程序退出運(yùn)行;DO_NOTHING則設(shè)置程序無響應(yīng)動(dòng)作;DISPOSE則設(shè)置銷毀窗口。默認(rèn)設(shè)置為EXIT_ON_CLOSE。
2. title
此屬性設(shè)置窗口的標(biāo)題欄文字。在屬性值列(title的右側(cè)列)直接輸入文字即可。單擊該屬性右側(cè)的按鈕,出現(xiàn)title設(shè)置對(duì)話框,可以對(duì)該屬性進(jìn)行復(fù)雜設(shè)置。
3. 其他屬性
還有三十多個(gè)其他屬性允許從多個(gè)方面配置窗體的細(xì)節(jié),IDE創(chuàng)建窗體之后對(duì)這些屬性按照平臺(tái)的一般慣例做了默認(rèn)設(shè)置(見圖2.41),但仍然需要根據(jù)程序的運(yùn)行需求進(jìn)行配置。以下結(jié)合簡(jiǎn)單加法計(jì)算器程序窗體的設(shè)計(jì),簡(jiǎn)要介紹其中常用屬性的配置。

圖2.39 JFrame內(nèi)部結(jié)構(gòu)

圖2.40 defaultCloseOperation屬性選項(xiàng)

圖2.41 窗體其他屬性的默認(rèn)配置
1)locationByPlatform
窗體自動(dòng)創(chuàng)建后運(yùn)行程序,該窗口出現(xiàn)在屏幕左上角(窗口左上角坐標(biāo)為(0,0)),這在大多數(shù)情況下都不符合用戶的期望。設(shè)置窗體的locationByPlatform屬性為選擇狀態(tài)(復(fù)選框打勾),則運(yùn)行時(shí)該窗口出現(xiàn)位置由視窗系統(tǒng)根據(jù)最后一個(gè)窗口的位置自動(dòng)定位。
2)type
該屬性設(shè)置窗口的類型,通過選擇下拉列表項(xiàng)指定。有三種類型:NORMAL是默認(rèn)值,這種窗口是一個(gè)普通窗口,作為程序的頂級(jí)窗口;UTILITY類型的窗口常作為工具欄或面板,使工具欄或面板可以獨(dú)立窗口方式顯示在界面中;POPUP類型的窗口是一個(gè)彈出式窗口,通常作為臨時(shí)出現(xiàn)的一個(gè)下拉式菜單或工具提示框。
3)alwaysOnTop
單擊該屬性值列,設(shè)置其值為True(復(fù)選框被選中,方框內(nèi)出現(xiàn)“√”),則該窗口未關(guān)閉之前一直顯示在屏幕頂層,即使切換其他程序在前臺(tái)運(yùn)行,該窗口也不會(huì)被遮擋。
4)bounds
該屬性設(shè)置窗口的初始位置和大小。單擊該屬性右側(cè)的按鈕,出現(xiàn)bounds對(duì)話框(見圖2.42),在X和Y右側(cè)的文本框中輸入整數(shù)值指定窗口左上角的坐標(biāo),在“寬度”和“高度”右側(cè)的文本框中輸入整數(shù)值指定窗口的大小。

圖2.42 設(shè)置bounds屬性值
5)preferredSize
該屬性設(shè)置窗口最適合的大小,通常是恰好能夠容納窗口中所有組件的大小。
6)resizable
該屬性設(shè)置為未選擇狀態(tài)(值列方框內(nèi)無“√”),則用戶不能改變窗口大小,“最大化”按鈕失效。
7)background
該屬性設(shè)置窗口的背景顏色。單擊該屬性行右側(cè)的按鈕,出現(xiàn)background對(duì)話框(見圖2.43)。可以用多種方式指定顏色,其中,HSV、HSL、RGB和CMYK選項(xiàng)卡允許使用調(diào)色板設(shè)置窗口的背景顏色(見圖2.44),“AWT組件面板”、“Swing組件面板”和“系統(tǒng)組件面板”選項(xiàng)卡允許選擇預(yù)定義的配色方案設(shè)置窗口背景顏色(見圖2.45)。

圖2.43 背景設(shè)置對(duì)話框

圖2.44 使用調(diào)色板設(shè)置背景顏色

圖2.45 使用系統(tǒng)預(yù)定義配色方案設(shè)置背景顏色
2.5.2 標(biāo)簽組件的屬性
標(biāo)簽(JLabel)組件用于描述其他組件,可以顯示純文本、圖片或者二者都有,包括主要屬性、其他屬性、布局和輔助功能4個(gè)方面,共幾十個(gè)具體屬性。以下介紹主要常用屬性。
1. text
text屬性設(shè)置該標(biāo)簽顯示的文字。雙擊該組件,標(biāo)簽上原來的文字被選中,并出現(xiàn)插入點(diǎn),直接輸入新文字內(nèi)容即可。
2. font
font屬性設(shè)置該標(biāo)簽顯示文字的字體。選擇該組件后,在“屬性”窗口的font屬性值列(及第2列)單擊,出現(xiàn)font對(duì)話框(見圖2.46),選擇所需的字體、字體樣式和大小,單擊“確定”按鈕即可。

圖2.46 字體設(shè)置對(duì)話框
3. icon
icon屬性設(shè)置該標(biāo)簽上顯示的圖標(biāo),并與文字同時(shí)顯示出來。選擇組件后,在“屬性”窗口的此屬性右側(cè)的…按鈕上單擊,出現(xiàn)icon對(duì)話框(見圖2.47),單擊“外部圖像”下的“文件或URL”右邊的…按鈕,然后在出現(xiàn)的“選擇圖像文件”對(duì)話框中選擇需要的圖像文件,單擊“打開”按鈕和“確定”按鈕之后,該圖像即顯示在標(biāo)簽上文字的左邊。

圖2.47 icon對(duì)話框
4. horizontalAlignment
horizontalAlignment屬性設(shè)置標(biāo)簽中文字在標(biāo)簽空間的水平對(duì)齊方式。選擇該組件后,單擊屬性窗口該屬性右側(cè)的下三角按鈕,出現(xiàn)選擇列表(見圖2.48)。其中,LEADING是首端對(duì)齊、TRAILING是尾端對(duì)齊、LEFT是左對(duì)齊、RIGHT是右對(duì)齊、CENTER是居中對(duì)齊。

圖2.48 標(biāo)簽水平對(duì)齊方式選擇
5. iconTextGap
如果text屬性和icon屬性都設(shè)置,該屬性指定它們之間的間距。
6. displayedMnemonic和labelFor
displayedMnemonic屬性設(shè)置標(biāo)簽的訪問鍵,labelFor屬性設(shè)置該標(biāo)簽附著的組件。當(dāng)用戶按下Alt+訪問鍵時(shí),焦點(diǎn)轉(zhuǎn)移到labelFor屬性指定的組件。例如,我們?cè)O(shè)置UserLogin窗體中jLabel1的訪問鍵是“T”(輸入字母“T”或其ASCII碼“84”),指定labelFor為文本字段jTextField2,則UserLogin運(yùn)行時(shí)用戶按下Alt+T組合鍵,則焦點(diǎn)轉(zhuǎn)移到文本字段jTextField2。
此外,背景和前景顏色也是常用屬性,設(shè)置方法與JFrame的背景色設(shè)置方法相同。
2.5.3 文本字段的屬性
文本字段JTextField(也稱文本框)是Swing中的基本文本組件,允許用戶在該組件顯示的文本框中輸入、刪除、選中和移動(dòng)文字。以下介紹該組件主要的常用屬性。
1. text
指定運(yùn)行時(shí)該組件中的初始文字。如果初始為空白文本框,需要將該屬性值設(shè)置為空白,即屬性值列無文字內(nèi)容。
2. columns
指定該組件預(yù)設(shè)的顯示列數(shù),是一個(gè)整數(shù)值。例如,在UserLogin窗體的jTextField1的columns屬性值列中輸入20,則jTextField1的寬度調(diào)整為能夠顯示20個(gè)字符。
3. editable
設(shè)置該文本字段是否可以編輯。如果選取該屬性(右側(cè)復(fù)選框出現(xiàn)“√”,其值為True),則運(yùn)行時(shí)可以編輯該文本框中的內(nèi)容,否則該文本框中的內(nèi)容不可編輯。
4. caretColor
設(shè)置運(yùn)行時(shí)該文本框中插入點(diǎn)的顏色。插入點(diǎn)是在文本框中閃動(dòng)的一條豎線,將要輸入或編輯的字符在該豎線的右邊(也可以刪除左邊文字)。設(shè)置方法與修改背景顏色相同。
5. caretPosition
設(shè)置運(yùn)行時(shí)該文本框中插入點(diǎn)的初始位置,是一個(gè)整數(shù)值。一般默認(rèn)為該文本框中字符的個(gè)數(shù),表示插入點(diǎn)在最后一個(gè)字符后面,新輸入的內(nèi)容緊接在原字符串末尾。設(shè)置為0表示新輸入的內(nèi)容位于文本框的頭端。
6. margin
設(shè)置文字區(qū)域和文本框的邊框之間的空距。單擊該屬性右側(cè)的…按鈕,出現(xiàn)margin對(duì)話框(見圖2.49),在其中輸入合適的整數(shù)值即可。

圖2.49 margin對(duì)話框
7. selectedTextColor和selectionColor
運(yùn)行時(shí),用戶可以用鼠標(biāo)或鍵盤選取文本框中的部分或全部文字。selectedTextColor屬性設(shè)置運(yùn)行時(shí)在該文本框中選取的文本的顏色,selectionColor設(shè)置所選文本的背景顏色。
此外,前景顏色、背景顏色、字體和水平對(duì)齊方式等屬性設(shè)置方法與標(biāo)簽JLabel相同。
2.5.4 按鈕的設(shè)計(jì)
Swing中的基本動(dòng)作組件是按鈕(JButton),與許多窗口中都能看到的“確定”和“取消”按鈕一樣,在單擊它們之后,會(huì)觸發(fā)事件。按鈕JButton是最常見的事件源,鼠標(biāo)單擊按鈕組件,一般立即引起特定指令的執(zhí)行。
單擊“組件面板”中的“按鈕”組件,然后在窗體中單擊,即可創(chuàng)建一個(gè)按鈕。按住Shift鍵連續(xù)單擊可以創(chuàng)建多個(gè)按鈕。
1. 定制代碼
可以定制GUI構(gòu)建器自動(dòng)生成的代碼風(fēng)格。NetBeans IDE屬性窗口中的“代碼”選項(xiàng)卡中提供了定制代碼的入口(見圖2.50)。
在“變量名稱”行的右側(cè)列單擊,輸入新的變量名稱,可以更改自動(dòng)生成的該組件的變量名。如將新創(chuàng)建按鈕的變量名稱“jButton1”修改為“jButtonOK”。
2. 屬性設(shè)置
按鈕組件的text、foreground、background、font、icon、mnemonic、horizontalAlignment、selected、margin和設(shè)置大小等屬性,大多數(shù)與標(biāo)簽等組件含義及設(shè)置方法相同。下面再介紹一些屬性,這些屬性在其他組件中也有并具有相同或相似的含義。

圖2.50 屬性窗口的“代碼”選項(xiàng)卡
1)toolTipText
該屬性設(shè)置組件的工具提示文字。當(dāng)光標(biāo)懸停到(光標(biāo)移動(dòng)到組件上稍停留一會(huì)兒)按鈕等組件上時(shí),光標(biāo)下邊出現(xiàn)黃色小方框,方框內(nèi)顯示的是此屬性設(shè)置的文字。
2)border
該屬性設(shè)置組件的邊框樣式。在該屬性的右側(cè)列中單擊,出現(xiàn)border對(duì)話框(見圖2.51)。在“可用邊框”列表中選擇邊框的類型,在下方的“屬性”面板中可以設(shè)置邊框各部分的顏色等屬性。

圖2.51 border對(duì)話框
3)cursor
該屬性設(shè)置光標(biāo)移動(dòng)到該組件上時(shí)的類型和樣式。在該屬性值列單擊,從下拉列表中選擇適合的光標(biāo)類型(見圖2.52)。

圖2.52 光標(biāo)選擇列表
4)enabled
該屬性設(shè)置組件是否在當(dāng)前狀態(tài)下有效。如果設(shè)置按鈕的enabled屬性值為False(框內(nèi)無√),則該按鈕不會(huì)響應(yīng)用戶操作,且按鈕以較暗的灰色顯示。
5)focusable
該屬性設(shè)置組件是否可以獲得焦點(diǎn)。一般GUI程序運(yùn)行時(shí),可以按Tab鍵使焦點(diǎn)在各個(gè)組件之間依次轉(zhuǎn)移。如果設(shè)置按鈕的focusable屬性值為False(框內(nèi)無√),則該按鈕不能通過Tab鍵獲得焦點(diǎn)。
3.“口令”字段JPasswordField
“口令”字段JPasswordField組件也是提供單行文本輸入的GUI組件,但是在其中輸入的字符不會(huì)以明文顯示,而是顯示為替代字符,它的echoChar屬性設(shè)置輸入內(nèi)容的顯示字符(即替代字符),其他屬性與文本字段相同。
2.5.5 單選按鈕及按鈕組
單選按鈕JRadioButton是Swing的一種選擇組件,多個(gè)單選按鈕通常組合在一起,向用戶呈現(xiàn)帶有必選答案的問題,而且這些答案具有強(qiáng)制性(這意味著問題只能有一個(gè)答案)。一旦選擇了單選按鈕就不能取消對(duì)它的選擇,除非選擇了在同一組中的另外一個(gè)單選按鈕。實(shí)現(xiàn)將多個(gè)單選按鈕組合為一組的組件是按鈕組ButtonGroup組件。同一個(gè)按鈕組的單選按鈕其中一個(gè)被選擇時(shí),另外一個(gè)就自動(dòng)取消選擇。
1. 單選按鈕JRadioButton的屬性
單選按鈕JRadioButton也有幾十個(gè)屬性,其中設(shè)置背景顏色、前景(文字)顏色、字體以及文字對(duì)齊方式等與標(biāo)簽和文本字段基本相同。下面介紹幾個(gè)主要屬性。
1)text
該屬性設(shè)置單選按鈕的顯示文字,設(shè)置方法與前述相同。這個(gè)屬性的文字出現(xiàn)在圓形按鈕的右側(cè)(如)。
2)selected
設(shè)置該單選按鈕初始是否為選取狀態(tài)。若設(shè)置該屬性右側(cè)為選取(√),則其初始即為選取狀態(tài)(),否則初始為未選取狀態(tài)(
)。其值在設(shè)計(jì)視圖中也可以反映出來。
3)icon
該屬性設(shè)置將單選按鈕的圓形圖標(biāo)改變?yōu)樗O(shè)置的圖像。與標(biāo)簽JLabel的icon屬性設(shè)置方法相同。
4)pressedIcon
設(shè)置了該屬性,則在該單選按鈕上按下鼠標(biāo)左鍵時(shí),按鈕的圓形圖標(biāo)變?yōu)樗O(shè)置的圖像。松開鼠標(biāo)左鍵時(shí)恢復(fù)原樣。
5)rolloverIcon
設(shè)置了該屬性,則在選擇其他單選按鈕之后光標(biāo)再移回到該按鈕上時(shí),按鈕的圓形圖標(biāo)變?yōu)樗O(shè)置的圖像。光標(biāo)移出該按鈕的區(qū)域時(shí)按鈕圖標(biāo)恢復(fù)原樣。
6)selectedIcon
設(shè)置該屬性則在選擇這個(gè)單選按鈕之后,按鈕的圓形圖標(biāo)變?yōu)樗O(shè)置的圖像。選擇其他單選按鈕時(shí)(此時(shí)已取消了對(duì)該按鈕的選擇),該按鈕圖標(biāo)恢復(fù)原樣。
7)rolloverSelectedIcon
設(shè)置該屬性則在這個(gè)單選按鈕處于選擇狀態(tài)時(shí),光標(biāo)移到它的區(qū)域范圍時(shí),按鈕的圓形圖標(biāo)變?yōu)樗O(shè)置的圖像。該按鈕未被選擇或光標(biāo)移出該按鈕的區(qū)域,則圖標(biāo)恢復(fù)原樣。
8)buttonGroup
該屬性設(shè)置此按鈕所屬的按鈕組。單擊屬性值列,在下拉列表中選擇,下拉列表項(xiàng)是目前在窗體中已經(jīng)創(chuàng)建的所有按鈕組變量名。同一個(gè)容器中具有相同buttonGroup屬性值的單選按鈕歸為同一組。
2. 按鈕組ButtonGroup組件
單擊“組件面板”中“Swing控件”組中的“按鈕組”組件,然后單擊GUI構(gòu)建器設(shè)計(jì)區(qū)域中的任意位置,即可將按鈕組組件添加到窗體中。但應(yīng)注意,所創(chuàng)建的按鈕組組件本身不會(huì)顯示在窗體中,而是顯示在導(dǎo)航器中該窗體的“其他組件”節(jié)點(diǎn)下。
按鈕組ButtonGroup只有4個(gè)屬性,都是不可設(shè)置的,其中,buttonCount的屬性值是該按鈕組中按鈕的個(gè)數(shù),且是自動(dòng)計(jì)算的。按鈕組組件的方法getElements()在編程中比較常用,能夠獲得ButtonGroup中的全部組件,允許對(duì)它們進(jìn)行迭代,找到其中選取的那個(gè)。
此外,多個(gè)復(fù)選框JCheckBox也可以組成按鈕組。歸組方法與單選按鈕的相似。
2.5.6 應(yīng)用示例
例2.6設(shè)計(jì)的UserLogin程序運(yùn)行界面如圖2.53所示,顯然不像一般程序的登錄界面。使用本節(jié)介紹的各個(gè)相關(guān)組件的設(shè)計(jì)方法,通過對(duì)有關(guān)屬性的設(shè)置,可以把它調(diào)整成一個(gè)較為漂亮的登錄界面。
例2.7 繼續(xù)設(shè)計(jì)例2.6完成的用戶登錄程序界面,修改各個(gè)組件的有關(guān)屬性,使它具有普通登錄界面的外觀。
操作步驟:
1. 設(shè)置窗口屬性
(1)在設(shè)計(jì)視圖單擊UserLogin窗體,在屬性窗口的title屬性值列單擊,輸入文字“用戶登錄”,按Enter鍵。
(2)在alwaysOnTop屬性值列單擊,設(shè)置該屬性為選取狀態(tài)(復(fù)選方框中打勾)。

圖2.53 例2.6設(shè)計(jì)的UserLogin程序運(yùn)行界面
(3)在resizable屬性值列單擊,設(shè)置該屬性為未選取狀態(tài)(復(fù)選方框中不打勾)。
(4)單擊location屬性值列右側(cè)的…按鈕,在X文本框中輸入400,Y文本框中輸入300,單擊“確定”按鈕。
2. 設(shè)置標(biāo)簽組件屬性
(1)單擊jLabel1標(biāo)簽組件,在屬性窗口中單擊text屬性值列,輸入文字“歡迎使用用戶登錄程序”。
(2)單擊font屬性值列,在font對(duì)話框中選擇“微軟雅黑”字體、“普通”字體樣式、大小選擇24,單擊“確定”按鈕。
(3)單擊foreground屬性值列,在foreground對(duì)話框中單擊RGB標(biāo)簽,在調(diào)色板綠色區(qū)單擊選擇某種綠色顏色(見圖2.54),單擊“確定”按鈕。

圖2.54 在顏色對(duì)話框中選擇RGB中的某種綠色
(4)重復(fù)步驟(1),分別選擇jLabel2、jLabel3和jLabel4標(biāo)簽組件,設(shè)置它們的text屬性值分別為“用戶名”“密碼”和“登錄為:”文字。
(5)按住Ctrl鍵同時(shí)選擇jLabel2、jLabel3和jLabel4標(biāo)簽組件,重復(fù)步驟(3),選擇“樣本”選項(xiàng)卡的第5行第7列顏色,設(shè)置它們的文字顏色為藍(lán)色。
3. 設(shè)置文本字段組件的屬性
(1)選擇文本字段jTextField1組件,清空text屬性值列內(nèi)容,在屬性窗口的columns屬性值列中輸入20。
(2)單擊caret屬性值列右側(cè)的…按鈕,選擇RGB選項(xiàng)卡調(diào)色板左下角顏色(紅色為255,綠色和藍(lán)色都為0),確定。
(3)單擊selectionColor屬性值列右側(cè)的…按鈕,選擇“AWT組件面板”選項(xiàng)卡顏色選擇列表中的青色,確定。
(4)選擇文本字段jTextField2組件,按Delete鍵刪除。
(5)單擊“組件面板”中“Swing控件組”中的“口令”字段圖標(biāo),光標(biāo)移到設(shè)計(jì)區(qū)域“密碼”標(biāo)簽右邊、用戶名文本字段正下方,當(dāng)幫助欄提示“與另一個(gè)組件左邊對(duì)齊,基線與另一個(gè)組件對(duì)齊”時(shí)單擊。
(6)單擊jPasswordField1組件,刪除text屬性值,設(shè)置columns屬性值為20。
4. 設(shè)置單選按鈕屬性
(1)單擊“組件面板”中“Swing控件組”中的按鈕組圖標(biāo),光標(biāo)移到設(shè)計(jì)區(qū)域單擊,GUI構(gòu)建器會(huì)創(chuàng)建名為buttonGroup1的組件。
(2)單擊選擇jRadioButton1組件,設(shè)置text屬性值為“學(xué)生”,selected屬性值列復(fù)選框?yàn)檫x取狀態(tài),設(shè)置buttonGroup屬性值為buttonGroup1。
(3)重復(fù)步驟(2)兩次,分別設(shè)置jRadioButton3和jRadioButton2組件的text屬性值為“教師”和“管理員”,設(shè)置buttonGroup屬性值均為buttonGroup1。
5. 創(chuàng)建和設(shè)置兩個(gè)按鈕
(1)在項(xiàng)目窗口右鍵單擊項(xiàng)目名chap02下的“源包”節(jié)點(diǎn),在快捷菜單中選擇“新建”|“文件夾”菜單項(xiàng),文件夾名稱輸入images,將提前準(zhǔn)備好的兩個(gè)圖標(biāo)文件ok.JPG()和cancel.JPG(
)復(fù)制到該文件夾下。
(2)單擊“組件面板”中“Swing控件組”中的按鈕圖標(biāo),光標(biāo)移到窗體中與“學(xué)生”單選按鈕左邊對(duì)齊時(shí)單擊。
(3)設(shè)置按鈕jButton1的text屬性值為“登錄”。單擊icon屬性值列右側(cè)的…按鈕,在圖標(biāo)選擇器對(duì)話框中選擇“項(xiàng)目?jī)?nèi)的圖像”|“包:images”|“文件:ok.JPG”(見圖2.55),單擊“確定”按鈕。

圖2.55 按鈕的圖標(biāo)選擇器
(4)重復(fù)步驟(2)和(3),在與“登錄”按鈕基線對(duì)齊、與“管理員”單選按鈕右邊對(duì)齊位置創(chuàng)建按鈕組件。text屬性值設(shè)置為“取消”。單擊icon屬性值列,在下拉列表中選擇cancel.JPG(見圖2.56)。

圖2.56 “取消”按鈕icon屬性值列表
6. 修改變量名稱
(1)選擇“用戶名”標(biāo)簽右側(cè)的文本字段組件,在屬性窗口中單擊“代碼”標(biāo)簽,修改“變量名稱”屬性值列內(nèi)容為jTextFieldUserName。
(2)重復(fù)步驟(1),分別修改“密碼”標(biāo)簽右側(cè)的“口令”字段組件的變量名稱為jPasswordFieldPassword、“學(xué)生”單選按鈕組件的變量名稱為jRadioButtonStd、“教師”單選按鈕組件的變量名稱為jRadioButtonTch、“管理員”單選按鈕組件的變量名稱為jRadioButtonAdmin、“登錄”按鈕組件的變量名稱為jButtonOK、“取消”按鈕組件的變量名稱為jButtonCancel。
7. 移動(dòng)調(diào)整組件位置
(1)按住Ctrl鍵,依次單擊選擇除第一行標(biāo)簽之外的所有組件,然后按下鼠標(biāo)左鍵并移動(dòng)鼠標(biāo),直到被選組件移到窗體中間適當(dāng)位置(見圖2.57),最后松開鼠標(biāo)鍵。
(2)選取第一行的歡迎標(biāo)簽,鼠標(biāo)拖動(dòng)左右方向移動(dòng)到窗口中間位置。

圖2.57 成組移動(dòng)組件位置

圖2.58 登錄程序運(yùn)行窗口
完成以上操作步驟后即完成了登錄程序GUI界面的設(shè)計(jì)。程序運(yùn)行窗口如圖2.58所示,可以看到窗口下半部分的組件布局仍不協(xié)調(diào),留到后面布局設(shè)計(jì)部分再調(diào)整。
- Mastering JavaScript Functional Programming
- PHP+MySQL網(wǎng)站開發(fā)項(xiàng)目式教程
- PhpStorm Cookbook
- 微信小程序開發(fā)解析
- Visual Basic程序設(shè)計(jì)
- Windows內(nèi)核編程
- PySpark Cookbook
- Advanced Express Web Application Development
- 小型編譯器設(shè)計(jì)實(shí)踐
- 代替VBA!用Python輕松實(shí)現(xiàn)Excel編程
- 邊玩邊學(xué)Scratch3.0少兒趣味編程
- IBM RUP參考與認(rèn)證指南
- jQuery Mobile Web Development Essentials(Second Edition)
- Node.js 6.x Blueprints
- 少兒編程輕松學(xué)(全2冊(cè))