新聞中心
我們將完成Netbeans 6.5 GUI 布局和設(shè)計(jì)工作并添加幾個(gè)按鈕和文本字段。這些文本字段用于接收用戶輸入和顯示程序輸出。這些按鈕用于啟動(dòng)前端的內(nèi)置功能。我們創(chuàng)建的應(yīng)用程序是一個(gè)非常簡(jiǎn)單但功能完善的計(jì)算器。

成都創(chuàng)新互聯(lián)客戶idc服務(wù)中心,提供成都天府聯(lián)通服務(wù)器托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過(guò)各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開(kāi)放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
有關(guān)更全面的Netbeans 6.5 GUI 生成器設(shè)計(jì)功能指南(包括各種設(shè)計(jì)功能的視頻演示),請(qǐng)參見(jiàn)在Netbeans 6.5IDE 中設(shè)計(jì) Swing GUI。
要學(xué)完本教程,您需要具備以下軟件和資源。
| 軟件或資源 | 要求的版本 |
|---|---|
| NetBeans IDE | 版本 6.5 |
| Java Development Kit (JDK) | 版本 6 或 版本 5 |
練習(xí) 1:創(chuàng)建項(xiàng)目
第一步是為要開(kāi)發(fā)的應(yīng)用程序創(chuàng)建 IDE 項(xiàng)目。我們將項(xiàng)目命名為 NumberAddition。
- 選擇“文件”>“新建項(xiàng)目”。或者,也可以單擊 IDE 工具欄中的“新建項(xiàng)目”圖標(biāo)。
- 在“類別”窗格中,選擇 "Java" 節(jié)點(diǎn)。在“項(xiàng)目”窗格中,選擇“Java 應(yīng)用程序”。單擊“下一步”。
- 在“項(xiàng)目名稱”字段中鍵入
NumberAddition,然后指定項(xiàng)目位置路徑(例如,在主目錄中)。 - (可選)選中“使用專用文件夾存儲(chǔ)庫(kù)”復(fù)選框,并指定庫(kù)文件夾的位置。有關(guān)此選項(xiàng)的詳細(xì)信息,請(qǐng)參見(jiàn)共享項(xiàng)目庫(kù)。
- 確?!霸O(shè)置為主項(xiàng)目”復(fù)選框處于選中狀態(tài)。
- 如果已選中“創(chuàng)建主類”復(fù)選框,請(qǐng)取消選中該復(fù)選框。
- 單擊“完成”。
練習(xí) 2:生成前端
要繼續(xù)生成界面,我們需要?jiǎng)?chuàng)建一個(gè) Java 容器,以便放置所需的其他 GUI 組件。在此步驟中,我們將使用 JFrame 組件創(chuàng)建一個(gè)容器。我們將該容器放在新包中,該包將顯示在“源包”節(jié)點(diǎn)中。
創(chuàng)建 JFrame 容器
- 在“項(xiàng)目”窗口中,右鍵單擊 "NumberAddition" 節(jié)點(diǎn)并選擇“新建”>“JFrame 窗體”。
- 在“類名”中輸入 NumberAdditionUI。
- 在“包”中輸入
my.numberaddition。 - 單擊“完成”。
IDE 將在 NumberAddition 應(yīng)用程序中創(chuàng)建 NumberAdditionUI 窗體和 NumberAdditionUI 類,然后在 GUI 生成器中打開(kāi) NumberAdditionUI 窗體。my.NumberAddition 包將替代缺省包。
添加組件:生成前端
接下來(lái),我們將通過(guò)組件面板使用 JPanel 填充應(yīng)用程序前端。然后,添加三個(gè) JLabel、三個(gè) JTextField 和三個(gè) JButton。如果以前沒(méi)有用過(guò) GUI 生成器,您可能會(huì)發(fā)現(xiàn)在 NetBeans IDE 中設(shè)計(jì) Swing GUI 教程中有關(guān)組件放置的信息非常有用。
在拖動(dòng)并放置完上述組件后,JFrame 應(yīng)類似于以下屏幕快照。
如果在 IDE 右上角未看到“組件面板”窗口,則選擇“窗口”>“組件面板”。
- 先從組件面板中選擇一個(gè) JPanel,然后將其拖放到 JFrame 上。
- 在突出顯示該 JPanel 時(shí),轉(zhuǎn)至“屬性”窗口,然后單擊 "Border" 旁邊的省略號(hào) (...) 按鈕以選擇邊框樣式。
- 在 "Border" 對(duì)話框中,從列表中選擇“帶標(biāo)題的邊框”,然后在“標(biāo)題”字段中鍵入
Number Addition。單擊“確定”保存更改并退出該對(duì)話框。 - 現(xiàn)在,將會(huì)看到一個(gè)標(biāo)題為 Number Addition 的空 JFrame,它與屏幕快照類似。按照上面的屏幕快照所示,添加三個(gè) JLabel、三個(gè) JTextField 和三個(gè) JButton。
重命名組件
在該步驟中,我們將重命名剛添加到 JFrame 中的這些組件的顯示文本。
- 雙擊
jLabel1并將文本屬性更改為First Number。 - 雙擊
jLabel2并將文本更改為Second Number。 - 雙擊
jLabel3并將文本更改為Result。 - 刪除
jTextField1中的樣例文本。可通過(guò)以下方法使顯示文本處于可編輯狀態(tài):?jiǎn)螕粑谋咀侄?,稍等片刻,然后再次單擊文本字段??赡苄枰獙?jTextField1調(diào)整為原始大小。對(duì)于jTextField2和jTextField3,重復(fù)此步驟。 - 將
jButton1顯示文本重命名為Clear。(可以通過(guò)右鍵單擊按鈕并選擇“編輯文本”來(lái)編輯按鈕的文本?;蛘撸部梢詥螕舭粹o,稍等片刻,然后再次單擊按鈕。) - 將
jButton2顯示文本重命名為Add。 - 將
jButton3顯示文本重命名為Exit。
現(xiàn)在,完成的 GUI 應(yīng)類似于以下屏幕快照:
練習(xí) 3:添加功能
在本練習(xí)中,我們將為 "Add"、"Clear" 和 "Exit" 按鈕添加功能。jTextField1 和 jTextField2 框用于用戶輸入,jTextField3 用于程序輸出;我們要?jiǎng)?chuàng)建的應(yīng)用程序是一個(gè)非常簡(jiǎn)單的計(jì)算器。我們現(xiàn)在就開(kāi)始吧。
使 "Exit" 按鈕正常工作
要為這些按鈕添加功能,必須為每個(gè)按鈕指定事件處理程序以響應(yīng)事件。在本示例中,我們需要了解何時(shí)通過(guò)鼠標(biāo)單擊或鍵盤按下了按鈕。因此,我們使用 ActionListener 來(lái)響應(yīng) ActionEvent。
- 右鍵單擊 "Exit" 按鈕。從彈出式菜單中選擇“事件”> "Action" > "ActionPerformed"。請(qǐng)注意,該菜單中還包含很多其他可響應(yīng)的事件!在選擇 actionPerformed 事件時(shí),IDE 自動(dòng)在 "Exit" 按鈕中添加 ActionListener,并生成一種處理程序方法以處理偵聽(tīng)程序的 actionPerformed 方法。
- IDE 將打開(kāi)“源代碼”窗口并滾動(dòng)至某一位置,在此將實(shí)現(xiàn)按下按鈕(通過(guò)鼠標(biāo)單擊或鍵盤)時(shí)希望其執(zhí)行的操作。源代碼窗口應(yīng)包含以下行:
- private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
- //TODO: Add your handling code here:
- }
- 現(xiàn)在,我們將為希望 "Exit" 按鈕執(zhí)行的操作添加代碼。必須在以上代碼中鍵入 System.exit(0); 以替換 TODO 行。完成的 "Exit" 按鈕代碼應(yīng)如下所示:
- private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
- System.exit(0);
- }
使 "Clear" 按鈕正常工作
- 單擊工作區(qū)域頂部的“設(shè)計(jì)”標(biāo)簽以返回到窗體設(shè)計(jì)區(qū)域
- 右鍵單擊 "Clear" 按鈕 (
jButton1)。從彈出式菜單中選擇“事件”> "Action" > "actionPerformed"。 - "Clear" 按鈕用于刪除 jTextField 中的所有文本。為此,將添加一些與以上代碼類似的代碼。完成的源代碼應(yīng)如下所示:
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
- jTextField1.setText("");
- jTextField2.setText("");
- jTextField3.setText("");
- }
上面的代碼將所有三個(gè) JTextField 中的文本更改為空,實(shí)際就是使用空白覆蓋現(xiàn)有文本。
使 "Add" 按鈕正常工作
"Add" 按鈕用于執(zhí)行三個(gè)操作:
- 它接受
jTextField1和jTextField2中的用戶輸入,并將輸入類型由字符串轉(zhuǎn)換為浮點(diǎn)。 - 然后,它將兩個(gè)數(shù)相加;最后,
- 將兩個(gè)數(shù)之和的類型轉(zhuǎn)換為字符串,并將其放在
TextField3中。
我們現(xiàn)在就開(kāi)始吧!
- 單擊工作區(qū)域頂部的“設(shè)計(jì)”標(biāo)簽以返回到窗體設(shè)計(jì)區(qū)域。
- 右鍵單擊 "Add" 按鈕 (
jButton2)。從彈出式菜單中選擇“事件”> "Action" > "actionPerformed" - 我們將添加一些代碼以使 "Add" 按鈕正常工作。完成的源代碼應(yīng)如下所示:
- private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
- // First we define float variables.
- float num1, num2, result;
- // We have to parse the text to a type float.
- num1 = Float.parseFloat(jTextField1.getText());
- num2 = Float.parseFloat(jTextField2.getText());
- // Now we can perform the addition.
- result = num1+num2;
- // We will now pass the value of result to jTextField3.
- // At the same time, we are going to
- // change the value of result from a float to a string.
- jTextField3.setText(String.valueOf(result)); }
程序已創(chuàng)建完畢,我們現(xiàn)在可以生成并運(yùn)行該程序以查看其運(yùn)行情況。
練習(xí) 4:運(yùn)行程序
在 IDE 中運(yùn)行程序:
- 選擇“運(yùn)行”>“運(yùn)行主項(xiàng)目”。
- 如果顯示的窗口通知您項(xiàng)目 NumberAddition 沒(méi)有設(shè)置主類,則應(yīng)在同一窗口中選擇 "my.NumberAddition.NumberAdditionUI" 作為主類,然后單擊“確定”按鈕。
在 IDE 外部運(yùn)行程序:
- 選擇“運(yùn)行”>“清理并生成主項(xiàng)目”(Shift-F11) 以生成應(yīng)用程序 JAR 文件。
- 通過(guò)使用系統(tǒng)的文件資源管理器或文件管理器,導(dǎo)航至
NumberAddition/dist目錄。 - 雙擊
NumberAddition.jar文件。
幾秒鐘后,將會(huì)啟動(dòng)應(yīng)用程序。
注意:如果在雙擊 JAR 文件時(shí)沒(méi)有啟動(dòng)應(yīng)用程序,請(qǐng)參見(jiàn)本文以了解在操作系統(tǒng)中設(shè)置 JAR 文件關(guān)聯(lián)的相關(guān)信息。
也可以通過(guò)命令行啟動(dòng)應(yīng)用程序。
通過(guò)命令行啟動(dòng)應(yīng)用程序:
- 在系統(tǒng)上,打開(kāi)命令提示符或終端窗口。
- 在命令提示符中,轉(zhuǎn)至
NumberAddition/dist目錄。 - 在命令行中,鍵入以下語(yǔ)句:
- java -jar NumberAddition.jar
事件處理的工作方式
本教程已介紹了如何響應(yīng)簡(jiǎn)單的按鈕事件。還可以讓應(yīng)用程序響應(yīng)很多其他事件。IDE 可以幫助您查找 GUI 組件可處理的可用事件列表:
- 返回至編輯器中的
NumberAdditionUI.java文件。單擊“設(shè)計(jì)”標(biāo)簽以在 GUI 生成器中查看 GUI 布局。 - 右鍵單擊任何 GUI 組件,然后從彈出式菜單中選擇“事件”。目前,僅瀏覽菜單以查看其中的內(nèi)容,而無(wú)需選擇任何內(nèi)容。
- 或者,也可以從“窗口”菜單中選擇“屬性”。在“屬性”窗口中,單擊“事件”標(biāo)簽。在“事件”標(biāo)簽中,可以查看和編輯與當(dāng)前活動(dòng) GUI 組件關(guān)聯(lián)的事件處理程序。
- 可以讓應(yīng)用程序響應(yīng)按鍵、鼠標(biāo)單擊、雙擊和三擊、鼠標(biāo)移動(dòng)、窗口大小以及焦點(diǎn)變化??梢詮摹笆录辈藛沃袨樗羞@些內(nèi)容生成事件處理程序。最常用的事件是 Action 事件。(要了解事件處理的最佳做法,請(qǐng)參見(jiàn) Sun 的 Java 事件教程。)
事件處理是如何工作的呢?每次從“事件”菜單中選擇事件時(shí),IDE 都會(huì)自動(dòng)創(chuàng)建一個(gè)所謂的事件偵聽(tīng)程序,并將其與組件關(guān)聯(lián)。請(qǐng)完成以下步驟以查看事件處理的工作方式。
- 返回至編輯器中的
NumberAdditionUI.java文件。單擊“源”標(biāo)簽以查看 GUI 源代碼。 - 向下滾動(dòng)并注意剛實(shí)現(xiàn)的方法
jButton1ActionPerformed()、jButton2ActionPerformed()和jButton3ActionPerformed()。這些方法稱為事件處理程序。 - 現(xiàn)在,滾動(dòng)至名為
initComponents()的方法。如果未看到該方法,請(qǐng)查找顯示Generated Code的行;單擊該行旁邊的 + 號(hào)以展開(kāi)折疊的initComponents()方法。 - 首先,請(qǐng)注意
initComponents()方法周圍的藍(lán)色塊。此代碼是由 IDE 自動(dòng)生成的,無(wú)法對(duì)其進(jìn)行編輯。 - 現(xiàn)在,瀏覽
initComponents()方法。此外,該方法還包含用于初始化 GUI 組件并將其放置在窗體上的代碼。在“設(shè)計(jì)”視圖中放置和編輯組件時(shí),將會(huì)自動(dòng)生成和更新該代碼。 - 在
initComponents()中,向下滾動(dòng)至顯示以下內(nèi)容的位置:- jButton3.setText("Exit");
- jButton3.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton3ActionPerformed(evt);
- }
- });
這是在 GUI 組件中添加事件偵聽(tīng)程序?qū)ο蟮奈恢茫辉诒臼纠?,將?
jButton3中注冊(cè) ActionListener。ActionListener 接口具有一個(gè) actionPerformed 方法,該方法采用 ActionEvent 對(duì)象(只需調(diào)用jButton3ActionPerformed事件處理程序即可實(shí)現(xiàn))作為其參數(shù)?,F(xiàn)在,該按鈕將偵聽(tīng) action 事件。每次按下該按鈕時(shí),都會(huì)生成 ActionEvent 并將其傳遞給偵聽(tīng)程序的 actionPerformed 方法,而該方法又會(huì)執(zhí)行在該事件的事件處理程序中提供的代碼。
一般來(lái)說(shuō),要能夠進(jìn)行響應(yīng),每個(gè)交互式 GUI 組件需要在事件偵聽(tīng)程序中進(jìn)行注冊(cè),并且需要實(shí)現(xiàn)事件處理程序。正如您所看到的一樣,NetBeans IDE 可處理關(guān)聯(lián)事件偵聽(tīng)程序的工作,因此,您可以集中精力實(shí)現(xiàn)應(yīng)由事件觸發(fā)的實(shí)際業(yè)務(wù)邏輯。
名稱欄目:生成Netbeans6.5GUI應(yīng)用程序簡(jiǎn)介
網(wǎng)頁(yè)地址:http://www.dlmjj.cn/article/cdjoojg.html


咨詢
建站咨詢
