第12章 圖形用戶界面_第1頁(yè)
第12章 圖形用戶界面_第2頁(yè)
第12章 圖形用戶界面_第3頁(yè)
第12章 圖形用戶界面_第4頁(yè)
第12章 圖形用戶界面_第5頁(yè)
已閱讀5頁(yè),還剩136頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第12章圖形用戶界面《Java基礎(chǔ)案例教程》(第3版)學(xué)習(xí)目標(biāo)/Target熟悉Swing頂級(jí)容器,能夠簡(jiǎn)述JFrame和JDialog的作用與使用方法了解Swing,能夠簡(jiǎn)述Swing的作用熟悉JavaFX和可視化布局工具的安裝,能夠簡(jiǎn)述JavaFX是什么,并對(duì)JavaFX和SceneBuilder進(jìn)行安裝、配置了解布局管理器,能夠簡(jiǎn)述布局管理器的作用,以及邊界布局管理器、流式布局管理器、網(wǎng)格布局管理器的特點(diǎn)熟悉Swing常用組件,能夠簡(jiǎn)述面板組件、標(biāo)簽組件、文本組件、按鈕組件的作用及使用方法學(xué)習(xí)目標(biāo)/Target掌握事件處理機(jī)制,能夠?yàn)镾wing常用組件注冊(cè)事件監(jiān)聽(tīng)器掌握J(rèn)avaFX應(yīng)用程序的基礎(chǔ)知識(shí),能夠基于JavaFX和SceneBuilder實(shí)現(xiàn)JavaFX入門(mén)程序掌握Swing頂級(jí)容器的使用方法,能夠通過(guò)JFrame和JDialog創(chuàng)建窗口和對(duì)話框掌握Swing常用組件的使用,能夠使用面板組件、標(biāo)簽組件、文本組件、按鈕組件、下拉列表框組件和文件對(duì)話框組件章節(jié)概述/

Summary用戶往往更喜歡使用界面友好的應(yīng)用程序,而不是采用命令行的應(yīng)用程序。圖形用戶界面(GraphicsUserInterface,GUI)使用圖形的方式,借助窗口中的菜單、按鈕等界面元素和鼠標(biāo)操作,實(shí)現(xiàn)用戶與計(jì)算機(jī)的交互。為了便于用戶開(kāi)發(fā)GUI,Java提供了生成各種GUI元素和處理GUI事件的類(lèi)庫(kù),本章將對(duì)GUI開(kāi)發(fā)進(jìn)行詳細(xì)講解。目錄/Contents0102Swing概述Swing頂級(jí)容器03Swing常用組件目錄/Contents0405布局管理器事件處理機(jī)制06JavaFXSwing概述12.112.1Swing概述了解Swing,能夠簡(jiǎn)述Swing的作用

先定一個(gè)小目標(biāo)!12.1Swing概述AWT是抽象窗口工具集(AbstractWindowToolkit),它實(shí)現(xiàn)了跨平臺(tái)界面風(fēng)格一致性,也就是說(shuō),在不同的操作系統(tǒng)上呈現(xiàn)出與該系統(tǒng)相同的外觀。然而,由于AWT要適應(yīng)所有主流操作操作系統(tǒng)的界面設(shè)計(jì),無(wú)法充分利用特定操作系統(tǒng)提供復(fù)雜圖形界面組件。因此在實(shí)際應(yīng)用中,AWT創(chuàng)建的圖形界面效果并不令人滿意。12.1Swing概述為了滿足更美觀和靈活的圖形用戶界面設(shè)計(jì)需求,Sun公司在AWT基礎(chǔ)上推出了Swing。Swing是一套更輕量級(jí)的GUI類(lèi)庫(kù),提供了豐富的組件和更強(qiáng)大的功能。與AWT不同,Swing組件是基于Java繪圖實(shí)現(xiàn)的,而,而不依賴于底層操作系統(tǒng)的圖形界面組件。這使得Swing能夠提供獨(dú)立于操作系統(tǒng)的外觀和行為,跨平臺(tái)性能較好。12.1Swing概述在Java中,Swing的相關(guān)組件都保存在javax.swing包中,下面通過(guò)一張圖描述Swing中主要組件和它們的繼承關(guān)系。12.1Swing概述Component類(lèi)作為AWT組件的基類(lèi),提供了設(shè)置組件大小、位置和可見(jiàn)性等方法,而Container類(lèi)作為容器父類(lèi),提供了訪問(wèn)容器的方法。Swing組件作為Component和Container子類(lèi),自動(dòng)繼承了這兩個(gè)類(lèi)的方法,這意味著Swing組件可以同時(shí)操作組件和容器的方法。12.1Swing概述Swing組件的常用方法如下。方法功能描述setLocation(intx,inty)設(shè)置組件的位置,通過(guò)橫坐標(biāo)x和縱坐標(biāo)y設(shè)置組件左上角的坐標(biāo)setSize(intwidth,intheight)設(shè)置組件的大小,width為組件的寬度,height為組件的高度,單位為像素setBounds(intx,inty,intwidth,intheight)同時(shí)設(shè)置組件的位置和大小setVisible(booleanb)設(shè)置組件的可見(jiàn)性,參數(shù)b為true時(shí)表示可見(jiàn),為false時(shí)表示不可見(jiàn)add(Componentcomp)向容器中添加組件compComponent[]getComponents()返回容器內(nèi)的所有組件Swing頂級(jí)容器12.212.2Swing頂級(jí)容器Swing的頂級(jí)容器是指Swing界面中的最高層級(jí)的容器,它們用于創(chuàng)建和管理整個(gè)圖形用戶界面。Swing的頂級(jí)容器類(lèi)實(shí)現(xiàn)了java.awt.Window類(lèi),可以作為獨(dú)立的窗口或應(yīng)用程序的主窗口。Swing中常用的頂級(jí)容器有兩個(gè),分別是JFrame和JDialog。12.2.1JFrame掌握J(rèn)Frame的使用,能夠通過(guò)JFrame創(chuàng)建窗口

先定一個(gè)小目標(biāo)!12.2.1JFrameJFrame是Swing庫(kù)中的一個(gè)獨(dú)立的頂級(jí)容器,不能放在其他容器中,主要用于創(chuàng)建具有窗口管理特性的GUI應(yīng)用程序窗口。使用JFrame可以在窗口中添加按鈕、文本框和標(biāo)簽等組件。JFrame的構(gòu)造方法和常用方法如下表所示。方法功能描述JFrame()創(chuàng)建一個(gè)初始時(shí)不可見(jiàn)的窗口JFrame(Stringtitle)創(chuàng)建一個(gè)初始不可見(jiàn)、具有指定標(biāo)題title的窗口setTitle(Stringtitle)設(shè)置窗口的標(biāo)題setDefaultCloseOperation(intoperation)設(shè)置窗口關(guān)閉時(shí)的操作,operation為代表不同的操作的整數(shù)。JFrame定義了一些常量來(lái)表示這些操作,例如JFrame.EXIT_ON_CLOSE表示退出應(yīng)用程序、JFrame.DO_NOTHING_ON_CLOSE表示忽略窗口關(guān)閉事件12.2.1JFrame案例演示下面通過(guò)案例演示JFrame的使用效果。Example01.java源代碼12.2.1JFrame案例演示案例的運(yùn)行結(jié)果如下圖所示。12.2.2JDialog掌握J(rèn)Dialog的使用,能夠通過(guò)JDialog創(chuàng)建對(duì)話框

先定一個(gè)小目標(biāo)!12.2.2JDialogJDialog是Swing庫(kù)中的一個(gè)頂級(jí)容器,主要用于創(chuàng)建對(duì)話框,對(duì)話框可以分為模態(tài)對(duì)話框和非模態(tài)對(duì)話框。模態(tài)對(duì)話框:用戶需要等待處理完當(dāng)前對(duì)話框后才能繼續(xù)與其他窗口交互。非模態(tài)對(duì)話框:允許用戶在處理當(dāng)前對(duì)話框的同時(shí)與其他窗口進(jìn)行交互。12.2.2JDialogJDialog提供了創(chuàng)建對(duì)話框的構(gòu)造方法和一系列設(shè)置對(duì)話框?qū)傩缘姆椒?,常?jiàn)的方法如下表所示。方法功能描述JDialog(Frameowner)創(chuàng)建一個(gè)綁定到窗口owner,且不帶標(biāo)題的非模態(tài)對(duì)話框JDialog(Frameowner,Stringtitle)創(chuàng)建一個(gè)綁定到窗口owner,其標(biāo)題為title的非模態(tài)對(duì)話框JDialog(Frameowner,Stringtitle,booleanmodal)創(chuàng)建一個(gè)指定模態(tài)性的對(duì)話框,并且綁定到窗口owner,標(biāo)題為title。其中modal為true表示對(duì)話框是模態(tài)的;為false表示對(duì)話框是非模態(tài)的12.2.2JDialog接上頁(yè)表格。方法功能描述voidsetModal(booleanmodal)設(shè)置對(duì)話框的模態(tài)性,modal為true表示設(shè)置對(duì)話框?yàn)槟B(tài)的對(duì)話框;為false表示設(shè)置對(duì)話框?yàn)榉悄B(tài)對(duì)話框voidsetDefaultCloseOperation(intoperation)設(shè)置對(duì)話框關(guān)閉時(shí)的操作,operation為代表不同的操作的整數(shù)。JDialog定義了一些常量來(lái)表示相應(yīng)的操作,例如JDialog.EXIT_ON_CLOSE表示關(guān)閉對(duì)話框并退出應(yīng)用程序、JDialog.DISPOSE_ON_CLOSE表示關(guān)閉對(duì)話框,但不終止應(yīng)用程序voidsetTitle(Stringtitle)設(shè)置對(duì)話框的標(biāo)題12.2.2JDialog案例演示JDialog三個(gè)常用的構(gòu)造方法都需要接收一個(gè)Frame類(lèi)型的對(duì)象,表示對(duì)話框所有者。下面通過(guò)一個(gè)案例學(xué)習(xí)JDialog類(lèi)的使用。Example02.java源代碼12.2.2JDialog案例演示案例的運(yùn)行結(jié)果如下圖所示。Swing常用組件12.312.3.1面板組件掌握面板組件的使用,能夠使用JPanel和JScrollPane創(chuàng)建和使用面板組件

先定一個(gè)小目標(biāo)!12.3.1面板組件Swing中的面板組件好比繪圖面板,它是一種容器組件,用于添加和組織GUI的各種組件。Swing中的面板組件主要有兩種,分別是JPanel和JScrollPane。12.3.1面板組件1.JPanelJPanel是Swing中的普通面板組件,是一個(gè)輕量級(jí)容器,它不提供窗口管理、標(biāo)題欄和邊框等功能,無(wú)法單獨(dú)顯示,通常將它添加到一個(gè)頂層容器(如JFrame)中進(jìn)行顯示。JPanel類(lèi)提供的常用構(gòu)造方法如下表所示。方法功能描述JPanel()使用默認(rèn)的布局管理器創(chuàng)建新面板,默認(rèn)布局管理器是FlowLayoutJPanel(LayoutManagerLayoutlayout)創(chuàng)建指定布局管理器的面板12.3.1面板組件2.JSCrollPaneJScrollPane是帶有滾動(dòng)條的面板,它只能添加一個(gè)組件,如果需要添加多個(gè)組件,應(yīng)該先將組件添加到JPanel中,然后將JPanel添加到JScrollPane中。JScrollPane常用的構(gòu)造方法如下表所示。方法功能描述JScrollPane()創(chuàng)建一個(gè)默認(rèn)滾動(dòng)策略的滾動(dòng)面板JScrollPane(Componentview)創(chuàng)建一個(gè)視口視圖為view的滾動(dòng)面板,視口視圖是滾動(dòng)面板中實(shí)際顯示的組件,當(dāng)視口視圖的大小不足以完全顯示內(nèi)容時(shí),滾動(dòng)條會(huì)出現(xiàn)在滾動(dòng)面板的邊緣JScrollPane(Componentview,intvsbPolicy,inthsbPolicy)創(chuàng)建視口視圖為view的滾動(dòng)面板,并指定其垂直滾動(dòng)條策略為vsbPolicy,水平滾動(dòng)條策略為hsbPolicy12.3.1面板組件2.JSCrollPaneJScrollPane類(lèi)中提供了一些常量用于表示垂直滾動(dòng)條和水平滾動(dòng)條的顯示策略,這些常量可以在構(gòu)造函數(shù)或其他方法中使用,以控制滾動(dòng)面板的行為。VERTICAL_SCROLLBAR_ALWAYS:始終顯示垂直滾動(dòng)條,無(wú)論內(nèi)容是否超出視口的高度。VERTICAL_SCROLLBAR_NEVER:從不顯示垂直滾動(dòng)條,即使內(nèi)容超出視口的高度。VERTICAL_SCROLLBAR_AS_NEEDED:根據(jù)需要顯示垂直滾動(dòng)條,僅當(dāng)內(nèi)容超出視口大小時(shí)才顯示垂直滾動(dòng)條。12.3.1面板組件2.JSCrollPaneHORIZONTAL_SCROLLBAR_ALWAYS:始終顯示水平滾動(dòng)條,無(wú)論內(nèi)容是否超出視口的寬度。HORIZONTAL_SCROLLBAR_NEVER:從不顯示水平滾動(dòng)條,即使內(nèi)容超出視口的寬度。HORIZONTAL_SCROLLBAR_AS_NEEDED:根據(jù)需要顯示水平滾動(dòng)條,僅當(dāng)內(nèi)容超出視口的寬度時(shí)顯示。12.3.1面板組件2.JSCrollPane如果在構(gòu)造方法中沒(méi)有指定顯示組件和滾動(dòng)條策略,也可以使用JScrollPane提供的方法進(jìn)行設(shè)置,如下表所示。方法功能描述setHorizontalBarPolicy(intpolicy)指定水平滾動(dòng)條策略,即水平滾動(dòng)條何時(shí)顯示在滾動(dòng)面板上setVerticalBarPolicy(intpolicy)指定垂直滾動(dòng)條策略,即垂直滾動(dòng)條何時(shí)顯示在滾動(dòng)面板上setViewportView(Componentview)設(shè)置滾動(dòng)面板的視口視圖,即要在滾動(dòng)面板中顯示的組件。12.3.1面板組件2.JSCrollPane下面通過(guò)一個(gè)案例來(lái)演示面板的使用,為了能更好地體現(xiàn)滾動(dòng)面板的滾動(dòng)條效果,在滾動(dòng)面板中添加一個(gè)普通面板,普通面板中添加3個(gè)按鈕組件。Example03.java源代碼12.3.1面板組件2.JSCrollPane案例的運(yùn)行結(jié)果如下圖所示。12.3.2標(biāo)簽組件掌握標(biāo)簽組件的使用,能夠使用JLabel創(chuàng)建和使用標(biāo)簽組件

先定一個(gè)小目標(biāo)!12.3.2標(biāo)簽組件Swing中的標(biāo)簽組件是用于顯示靜態(tài)文本或圖像的組件。在Swing中常用的標(biāo)簽組件是

JLabel,主要用于在界面中顯示信息說(shuō)明,可以顯示純文本、HTML文本和圖像等內(nèi)容。JLabel不具備鍵盤(pán)焦點(diǎn),并且沒(méi)有內(nèi)置的交互功能,所以用戶無(wú)法通過(guò)鍵盤(pán)輸入或通過(guò)單擊等操作與JLabel進(jìn)行交互。12.3.2標(biāo)簽組件JLabel類(lèi)的常用構(gòu)造方法如下表所示。方法功能描述JLabel()創(chuàng)建一個(gè)沒(méi)有任何文本或圖像的標(biāo)簽JLabel(Iconimage)創(chuàng)建具有指定圖像image的標(biāo)簽JLabel(Stringtext)創(chuàng)建具有指定文本text的標(biāo)簽12.3.2標(biāo)簽組件JLabel類(lèi)還提供了一些操作標(biāo)簽的常用方法,具體如下表所示。方法功能描述setText(Stringtext)設(shè)置標(biāo)簽的文本內(nèi)容為textsetIcon(Iconimage)設(shè)置標(biāo)簽的圖像為imagegetText()返回標(biāo)簽的文本內(nèi)容12.3.2標(biāo)簽組件案例演示下面通過(guò)一個(gè)案例演示JLabel的使用,案例中通過(guò)JFrame創(chuàng)建一個(gè)窗口,然后向窗口中添加兩個(gè)標(biāo)簽,這兩個(gè)標(biāo)簽分別使用不同的創(chuàng)建方法。Example04.java源代碼12.3.2標(biāo)簽組件案例演示12.3.3文本組件掌握文本組件的使用,能夠使用JTextField、JPasswordField、JTextArea創(chuàng)建對(duì)應(yīng)的文本組件

先定一個(gè)小目標(biāo)!12.3.3文本組件Swing中的文本組件指的是用于顯示和接收文本輸入的組件,Swing提供了多種文本組件,其中常見(jiàn)的有JTextField和JTextArea,這些文本組件都有一個(gè)共同父類(lèi)JTextComponent,JTextComponent類(lèi)是一個(gè)抽象類(lèi),它提供了文本組件的常用方法,如下表所示。方法聲明功能描述setText(Stringtext)設(shè)置文本組件的文本內(nèi)容為textgetText()獲取文本組件的文本內(nèi)容setEditable(booleanb)設(shè)置文本組件是否可編輯,true為可編輯狀態(tài),false為不可編輯狀態(tài)getSelectedText()獲取當(dāng)前所選文本內(nèi)容selectAll()選擇文本組件的所有文本內(nèi)容replaceSelection(Stringtext)用指定的文本內(nèi)容text替換當(dāng)前所選文本內(nèi)容12.3.3文本組件1.JTextFieldJTextField表示單行文本框,用于輸入和編輯單行文本。JTextField類(lèi)的常用構(gòu)造方法如下表所示。方法聲明功能描述JTextField()創(chuàng)建一個(gè)初始內(nèi)容為空的文本框JTextField(Stringtext)創(chuàng)建一個(gè)初始內(nèi)容為text的文本框JTextField(intcolumns)創(chuàng)建一個(gè)列數(shù)為columns的文本框,列數(shù)也就是文本框的寬度,即可顯示的最大字符數(shù)JTextField(Stringtext,intcolumns)創(chuàng)建一個(gè)列數(shù)為columns,初始內(nèi)容為text的文本框12.3.3文本組件1.JTextFieldJTextField有一個(gè)表示密碼輸入框的子類(lèi)JPasswordField,它在顯示用戶輸入的文本時(shí)會(huì)使用指定的回顯字符(例如“*”)代替真實(shí)的文本,以提高密碼的保密性。JPasswordField和JTextField的構(gòu)造方法相似,但提供了自身獨(dú)有的方法操作密碼輸入框,常用的方法如下表所示。方法聲明功能描述getPassword()以數(shù)組的形式獲取用戶在密碼輸入框中輸入的字符setPassword(char[]password)設(shè)置密碼輸入框的密碼setEchoChar(charechoChar)設(shè)置回顯字符,即代替真實(shí)文本顯示的字符getEchoChar()獲取當(dāng)前密碼輸入框的回顯字符12.3.3文本組件2.JTextAreaTextArea也稱為文本域,用于多行文本的顯示和編輯。JTextArea常用的構(gòu)造方法如下表所示。方法聲明功能描述JTextArea()創(chuàng)建一個(gè)初始內(nèi)容為空的文本域JTextArea(Stringtext)創(chuàng)建一個(gè)初始內(nèi)容為text的文本域JTextArea(introws,intcolumns)創(chuàng)建一個(gè)行數(shù)為rows,列數(shù)為columns的文本域JTextArea(Stringtext,introws,intcolumns)創(chuàng)建一個(gè)行數(shù)為rows,列數(shù)為columns,初始內(nèi)容為text的文本域12.3.3文本組件案例演示接下來(lái)通過(guò)一個(gè)案例演示文本組件JTextField和JTextArea的基本用法,在該案例中,編寫(xiě)一個(gè)聊天窗口。Example05.java源代碼12.3.3文本組件案例演示案例的運(yùn)行結(jié)果如下圖所示。12.3.4按鈕組件掌握按鈕組件的使用,能夠使用JButton、JRadioButton、JCheckBox、JMenu和JMenuItem創(chuàng)建普通按鈕、單選按鈕、復(fù)選框按鈕、菜單和菜單項(xiàng)

先定一個(gè)小目標(biāo)!12.3.4按鈕組件Swing中的按鈕組件主要用于觸發(fā)GUI的交互操作,可以添加到任何容器中,例如

JFrame、JPanel、JDialog等。常見(jiàn)的按鈕類(lèi)型包括普通按鈕、單選按鈕、復(fù)選框、菜單和菜單項(xiàng)等。這些按鈕都是抽象類(lèi)AbstractButton的直接或間接子類(lèi)。12.3.4按鈕組件AbstractButton類(lèi)的常用方法如下表所示。方法聲明功能描述setText(Stringtext)設(shè)置按鈕的文本內(nèi)容為textgetText()獲取按鈕的文本內(nèi)容setEnabled(booleanenabled)設(shè)置按鈕是否可用,enabled設(shè)置為true按鈕為可用,設(shè)置為false則為不可用isEnabled()判斷按鈕是否可用setSelected(booleanselected)設(shè)置按鈕的選擇狀態(tài),僅適用于部分按鈕類(lèi)型,如JRadioButton、JCheckBox12.3.4按鈕組件1.JButtonJButton是最簡(jiǎn)單的一種按鈕組件,它允許用戶通過(guò)單擊進(jìn)行交互。JButton類(lèi)常用構(gòu)造方法如下表所示。方法聲明功能描述JButton()創(chuàng)建一個(gè)沒(méi)有文本內(nèi)容和圖標(biāo)的按鈕JButton(Iconicon)創(chuàng)建一個(gè)圖標(biāo)為icon的按鈕JButton(Stringtext)創(chuàng)建一個(gè)文本內(nèi)容為text的按鈕JButton(Stirngtext,Iconicon)創(chuàng)建一個(gè)文本內(nèi)容為text和圖標(biāo)為icon的按鈕12.3.4按鈕組件1.JButton下面通過(guò)一個(gè)案例演示JButton的使用。Example06.java源代碼12.3.4按鈕組件1.JButton案例的運(yùn)行結(jié)果如下圖所示。12.3.4按鈕組件2.JRadioButton單選按鈕是一種可以在多個(gè)選項(xiàng)中選擇一個(gè)選項(xiàng)的按鈕,當(dāng)選擇其中一個(gè)選項(xiàng),先前選擇的選項(xiàng)就會(huì)自動(dòng)取消。在Swing中,JRadioButton本身并不能直接實(shí)現(xiàn)只能選擇一個(gè)單選按鈕的功能。需要使用ButtonGroup類(lèi)實(shí)現(xiàn)單選按鈕的互斥。ButtonGroup是一個(gè)不可見(jiàn)的組件,它在邏輯上表示一個(gè)單選按鈕組,要實(shí)現(xiàn)按鈕的單選功能,可以將多個(gè)JRadioButton按鈕添加到同一個(gè)ButtonGroup對(duì)象中。ButtonGroup對(duì)象會(huì)確保在其中的所有單選按鈕中,只有一個(gè)按鈕能夠被選擇。12.3.4按鈕組件2.JRadioButtonJRadioButton類(lèi)常用構(gòu)造方法如下表所示。方法聲明功能描述JRadioButton()創(chuàng)建一個(gè)文本內(nèi)容為空、初始狀態(tài)為未被選擇的單選按鈕JRadioButton(Stringtext)創(chuàng)建一個(gè)文本內(nèi)容為text,初始狀態(tài)未被選定的單選按鈕JRadioButton(Stringtext,booleanselected)創(chuàng)建一個(gè)文本內(nèi)容為text,指定初始狀態(tài)的單選按鈕,selected為true,則單選按鈕會(huì)默認(rèn)選擇,selected為false,則單選按鈕不會(huì)默認(rèn)選擇12.3.4按鈕組件2.JRadioButton下面通過(guò)一個(gè)案例演示JRadioButton的使用。Example07.java源代碼12.3.4按鈕組件2.JRadioButton案例的運(yùn)行結(jié)果如下圖所示。12.3.4按鈕組件3.JCheckBox復(fù)選框是一種用于同時(shí)選擇多個(gè)選項(xiàng)的組件。在Swing中使用JCheckBox類(lèi)創(chuàng)建復(fù)選框,它具有選擇和未選擇兩種狀態(tài)。JCheckBox類(lèi)的常用構(gòu)造方法如下表所示。方法聲明功能描述JCheckBox()創(chuàng)建一個(gè)文本內(nèi)容為空,初始狀態(tài)為取消勾選的復(fù)選框JCheckBox(Stringtext)創(chuàng)建一個(gè)文本內(nèi)容為text,初始狀態(tài)為取消勾選的復(fù)選框JCheckBox(Stringtext,booleanselected)創(chuàng)建一個(gè)文本內(nèi)容為text,并指定初始狀態(tài)的復(fù)選框,其中,selected為true,則復(fù)選框會(huì)默認(rèn)勾選,selected為false,則復(fù)選框默認(rèn)取消勾選12.3.4按鈕組件3.JCheckBox下面通過(guò)一個(gè)案例演示JCheckBox的基本用法。Example08.java源代碼12.3.4按鈕組件3.JCheckBox案例的運(yùn)行結(jié)果如下圖所示。12.3.4按鈕組件4.JMenu和JMenuItemJMenu和JMenuItem是Swing中用于創(chuàng)建菜單和菜單項(xiàng)的組件。JMenuItem:用于創(chuàng)建菜單項(xiàng),用于在菜單中表示一個(gè)可執(zhí)行的選項(xiàng)。JMenu:用于創(chuàng)建菜單,通常作為菜單欄或其他菜單中的一個(gè)父菜單項(xiàng),JMenu可以包含一組相關(guān)的菜單項(xiàng)用于組織和分組菜單項(xiàng)。12.3.4按鈕組件4.JMenu和JMenuItemJMenu和JMenuItem結(jié)合使用可以創(chuàng)建出菜單系統(tǒng),但通常這兩者還會(huì)結(jié)合JMenuBar一起使用。JMenuBar并不是一個(gè)按鈕組件,它是Swing庫(kù)中用于創(chuàng)建菜單欄的組件。制作完整的菜單系統(tǒng)通常采用的方式是使用JMenuBar包含多個(gè)JMenu,每個(gè)JMenu包含多個(gè)JMenuItem。12.3.4按鈕組件4.JMenu和JMenuItem(1)JMenuBarJMenuBar表示一個(gè)水平的菜單欄,用來(lái)管理一組菜單,不參與用戶的交互操作。菜單欄可以放在容器的任何位置,但通常情況下會(huì)使用頂級(jí)容器(如JFrame、Jdialog)的setJMenuBar()方法將菜單欄放置在頂級(jí)容器的頂部。JMenuBar有一個(gè)無(wú)參構(gòu)造方法,創(chuàng)建菜單欄時(shí),只需要使用new關(guān)鍵字創(chuàng)建JMenubar對(duì)象即可。創(chuàng)建完菜單欄對(duì)象后,通過(guò)對(duì)象調(diào)用add(JMenuc)方法為菜單欄添加JMenu菜單。12.3.4按鈕組件4.JMenu和JMenuItem(2)JMenuJMenu表示一個(gè)菜單,它用來(lái)整合管理菜單項(xiàng)。菜單可以是單一層次的結(jié)構(gòu),也可以是多層次的結(jié)構(gòu)。一般使用構(gòu)造函數(shù)JMenu(Stringtext)創(chuàng)建JMenu菜單,參數(shù)text表示菜單上的文本內(nèi)容。12.3.4按鈕組件4.JMenu和JMenuItem(2)JMenu除了構(gòu)造方法,JMenu中還提供了一些常用方法,具體如下表所示。方法聲明功能描述JMenuItemadd(JMenuItemmenuItem)將菜單項(xiàng)添加到菜單末尾,返回此菜單項(xiàng)voidaddSeparator()將分隔符添加到菜單的末尾JMenuItemgetItem(intpos)返回指定索引處的菜單項(xiàng),第一個(gè)菜單項(xiàng)的索引為0intgetItemCount()返回菜單上的項(xiàng)數(shù),菜單項(xiàng)和分隔符都計(jì)算在內(nèi)12.3.4按鈕組件4.JMenu和JMenuItem(2)JMenu接上頁(yè)表格。方法聲明功能描述JMenuIteminsert(JMenuItem

menuItem,intpos)在指定索引處插入菜單項(xiàng)voidinsertSeparator(intpos)在指定索引處插入分隔符voidremove(intpos)從菜單中移除指定索引處的菜單項(xiàng)voidremove(JMenuItemmenuItem)從菜單中移除指定的菜單項(xiàng)voidremoveAll()從菜單中移除所有的菜單項(xiàng)12.3.4按鈕組件4.JMenu和JMenuItem(3)JMenuItemJMenuItem表示一個(gè)菜單項(xiàng),它是下拉式菜單系統(tǒng)中最基本的組件。JMenuItem可以包含一個(gè)標(biāo)簽,用于顯示菜單項(xiàng)的文本,可以添加圖標(biāo),并且可以啟用或禁用,以控制菜單項(xiàng)的可用性。在創(chuàng)建菜單項(xiàng)時(shí),通常使用構(gòu)造方法JMenuItem(Stringtext)為菜單項(xiàng)指定文本內(nèi)容。12.3.4按鈕組件4.JMenu和JMenuItem(3)JMenuItem除了構(gòu)造方法,JMenuItem中還提供了一些常用的方法,具體如下表所示。方法聲明功能描述addActionListener(ActionListenerl)用于為菜單項(xiàng)注冊(cè)一個(gè)動(dòng)作監(jiān)聽(tīng)器,當(dāng)單擊菜單項(xiàng)時(shí),會(huì)自動(dòng)調(diào)用注冊(cè)的ActionListener的

actionPerformed(ActionEvente)方法setActionCommand(StringactionCommand)

用于設(shè)置菜單項(xiàng)的動(dòng)作命令,通過(guò)獲取菜單項(xiàng)的動(dòng)作命令可以區(qū)分不同的菜單項(xiàng),并執(zhí)行相應(yīng)的操作12.3.4按鈕組件案例演示下面通過(guò)一個(gè)案例演示JMenuItem、JMenu結(jié)合JMenuBar的基本使用。Example09.java源代碼12.3.4按鈕組件案例演示案例的運(yùn)行結(jié)果如下圖所示。12.3.4按鈕組件案例演示單擊“文件”菜單,效果如下圖所示。掌握下拉列表框組件和文件對(duì)話框組件的使用,能夠使用JComboBox和JFileChooser分別創(chuàng)建下拉列表框組件和文件對(duì)話框組件

先定一個(gè)小目標(biāo)!12.3.5下拉列表框組件和文件對(duì)話框組件12.3.5下拉列表框組件和文件對(duì)話框組件1.下拉列表框組件下拉列表框是一種常見(jiàn)的GUI組件,它包含一個(gè)可展開(kāi)的選項(xiàng)列表,默認(rèn)顯示的是第一個(gè)添加的選項(xiàng)。當(dāng)用戶單擊下拉列表框時(shí),會(huì)出現(xiàn)選項(xiàng)列表,用戶可以從中選擇其中一項(xiàng),完成選擇后,選項(xiàng)列表會(huì)隱藏,下列列表框中顯示用戶選擇的選項(xiàng)。12.3.5下拉列表框組件和文件對(duì)話框組件1.下拉列表框組件Swing中使用JComboBox創(chuàng)建下拉列表框,下拉列表框分為可編輯和不可編輯兩種形式。不可編輯的下拉列表框:用戶只能選擇現(xiàn)有的選項(xiàng)列表;可編輯的下拉列表框,用戶既可以選擇現(xiàn)有的選項(xiàng)列表,也可以自己輸入新的內(nèi)容。需要注意的是,自己輸入的內(nèi)容只能作為當(dāng)前項(xiàng)顯示,并不會(huì)添加到下拉列表框的選項(xiàng)列表中。JComboBox類(lèi)的常用構(gòu)造方法,如下所示。方法聲明功能描述JComboBox()創(chuàng)建一個(gè)沒(méi)有可選項(xiàng)的下拉列表框JComboBox(Object[]items)創(chuàng)建一個(gè)下拉列表框,將Object數(shù)組中的元素作為選項(xiàng)列表中的選項(xiàng)12.3.5下拉列表框組件和文件對(duì)話框組件1.下拉列表框組件除了構(gòu)造方法,JComboBox還提供了一系列管理下拉列表框的方法,常用的方法如下表所示。方法聲明功能描述addItem(ObjectanObject)添加一個(gè)選項(xiàng)到選項(xiàng)列表的末尾insertItemAt(ObjectanObject,

intindex)在索引index處插入選項(xiàng)anObjectgetItemAt(intindex)獲取index索引所在的選項(xiàng),第一個(gè)選項(xiàng)的索引為0getItemCount()獲取選項(xiàng)列表中選項(xiàng)的數(shù)目getSelectedItem()獲取當(dāng)前選擇的選項(xiàng)12.3.5下拉列表框組件和文件對(duì)話框組件1.下拉列表框組件接上頁(yè)表格。方法聲明功能描述removeAllItems()刪除選項(xiàng)列表中所有的選項(xiàng)removeItem(Objectobject)刪除選項(xiàng)列表中object選項(xiàng)removeItemAt(intindex)刪除索引index處的選項(xiàng)setEditable(booleanaFlag)設(shè)置下拉列表框的選項(xiàng)是否可編輯,aFlag為true則可編輯,反之則不可編輯12.3.5下拉列表框組件和文件對(duì)話框組件1.下拉列表框組件下面通過(guò)一個(gè)案例演示JComboBox類(lèi)的常用方法的使用。Example10.java源代碼12.3.5下拉列表框組件和文件對(duì)話框組件1.下拉列表框組件案例的運(yùn)行結(jié)果如下圖所示。12.3.5下拉列表框組件和文件對(duì)話框組件1.下拉列表框組件單擊下拉列表框后的效果如下圖所示。12.3.5下拉列表框組件和文件對(duì)話框組件2.文件對(duì)話框組件JFileChooser是JavaSwing庫(kù)中的一個(gè)類(lèi),用于創(chuàng)建一個(gè)文件對(duì)話框,允許用戶瀏覽和選擇文件或目錄。JFileChooser常用的方法如下表所示。方法聲明功能描述JFileChooser()創(chuàng)建JFileChooser對(duì)象setDialogTitle(StringdialogTitle)用于設(shè)置文件對(duì)話框的標(biāo)題為dialogTitleshowSaveDialog(Componentparent)用于顯示文件選擇對(duì)話框,并等待用戶選擇一個(gè)文件或目錄getSelectedFile()用于獲取用戶選擇的文件或目錄布局管理器12.412.4布局管理器了解布局管理器,能夠簡(jiǎn)述布局管理器的作用,以及邊界布局管理器、流式布局管理器、網(wǎng)格布局管理器的特點(diǎn)

先定一個(gè)小目標(biāo)!12.4布局管理器Swing是一種用于開(kāi)發(fā)GUI的工具,開(kāi)發(fā)人員需要將組件放置在容器中,以實(shí)現(xiàn)更美觀的界面。然而,在容器中加入組件時(shí),需要考慮組件的位置和大小,如在紙上繪圖計(jì)算各組件間距離后,再添加組件。這樣雖然可以靈活掌控組件的位置,但實(shí)現(xiàn)卻非常麻煩。12.4布局管理器為了提高開(kāi)發(fā)效率,Swing提供了布局管理器(LayoutManager),布局管理器是用于管理和控制組件布局的工具。它可以自動(dòng)地計(jì)算和調(diào)整組件的位置和大小,以實(shí)現(xiàn)界面的自動(dòng)布局和排列。常見(jiàn)的布局管理器有邊界布局管理器(BorderLayout)、流式布局管理器(FlowLayout)、網(wǎng)格布局管理器(GridLayout)。12.4布局管理器1.邊界布局管理器邊界布局管理器是Swing中Window、JFrame和JDialog默認(rèn)的布局管理器,通過(guò)BorderLayout類(lèi)實(shí)現(xiàn)。邊界布局管理器將窗口分為5個(gè)區(qū)域:North(北部)、South(南部)、East(東部)、West(西部)和Center(中心),每個(gè)區(qū)域可以放置一個(gè)組件,組件可以占據(jù)區(qū)域的全部空間。12.4布局管理器1.邊界布局管理器BorderLayout類(lèi)的常用構(gòu)造方法如下。BorderLayout():創(chuàng)建一個(gè)邊界布局管理器,該管理器所管理的組件之間沒(méi)有間隙。BorderLayout(inthgap,intvgap)創(chuàng)建一個(gè)邊界布局管理器,其中hgap參數(shù)表示組件之間的橫向間隔;vgap參數(shù)表示組件的縱向間隔,單位是像素。12.4布局管理器1.邊界布局管理器如需要在容器中添加組件,可以使用add(Componentcomp,Objectconstraints)方法,來(lái)指定組件在容器中的位置和布局方式。comp:參數(shù)表示要添加的組件對(duì)象。constraints:參數(shù)用于確定組件在容器中的位置和布局方式。12.4布局管理器1.邊界布局管理器當(dāng)容器使用邊界布局管理器時(shí),可以使用BorderLayout類(lèi)提供的五個(gè)常量作為constraints參數(shù)的取值,具體如下。BorderLayout.NORTH:將組件放置在容器的北部(頂部)。BorderLayout.SOUTH:將組件放置在容器的南部(底部)。BorderLayout.WEST:將組件放置在容器的西部(左側(cè))。BorderLayout.EAST:將組件放置在容器的東部(右側(cè))。BorderLayout.CENTER:將組件放置在容器的中心位置。12.4布局管理器2.流式布局管理器流式布局管理器是將組件按照從左到右的規(guī)則排列的布局管理器,是JPanel的默認(rèn)布局管理器,通過(guò)FlowLayout類(lèi)實(shí)現(xiàn)。流式布局管理器會(huì)將組件按照從左到右的順序放置在容器中,當(dāng)組件到達(dá)容器邊界時(shí),會(huì)自動(dòng)將下一個(gè)組件放置在下一行的起始位置。這種布局方式允許組件按照左對(duì)齊、居中對(duì)齊或右對(duì)齊的方式排列。12.4布局管理器2.流式布局管理器流式布局管理器不限制所管理組件的大小,可以根據(jù)內(nèi)容自動(dòng)進(jìn)行調(diào)整,以適應(yīng)布局的需要。FlowLayout類(lèi)常用的構(gòu)造方法如下。FlowLayout():創(chuàng)建一個(gè)流式布局管理器,默認(rèn)的組件橫向和縱向間隔都是5像素。FlowLayout(intalign):創(chuàng)建一個(gè)流式布局管理器,align參數(shù)用于指定組件的對(duì)齊方式。FlowLayout(intalign,inthgap,intvgap):創(chuàng)建一個(gè)流式布局管理器,并指定其組件的對(duì)齊方式為align,組件橫向間隔為hgap,縱向間隔為vgap,單位為像素。

用于設(shè)置對(duì)齊方式的常量值可以是FlowLayout.LEFT、FlowLayout.RIGHT和FlowLayout.CENTER,分別表示左對(duì)齊、右對(duì)齊和居中對(duì)齊。12.4布局管理器3.網(wǎng)格布局管理器網(wǎng)格布局管理器通過(guò)GridLayout類(lèi)實(shí)現(xiàn),它以網(wǎng)格的形式管理容器中組件的布局。GridLayout使用縱橫線將容器分成行(rows)和列(columns)大小相等的網(wǎng)格,每個(gè)網(wǎng)格放置一個(gè)組件,添加到容器的組件首先放置在第1行第1列的網(wǎng)格中,然后從左到右依次放置其他組件。一行放滿后,繼續(xù)在下一行從左到右放置組件。使用GridLayout管理的組件將自動(dòng)占據(jù)網(wǎng)格的整個(gè)區(qū)域。12.4布局管理器3.網(wǎng)格布局管理器GridLayout類(lèi)常用的構(gòu)造方法如下:GridLayout(introws,intcols):創(chuàng)建一個(gè)指定行(rows)和列(cols)的網(wǎng)格布局,布局中所有組件大小一樣,組件之間沒(méi)有間隔。GridLayout(introws,intcols,inthgap,intvgap):創(chuàng)建一個(gè)指定行(rows)和列(cols)的網(wǎng)格布局,并且可以指定組件之間橫向(hgap)和縱向(vgap)的間隔,單位是像素。12.4布局管理器案例演示下面以使用邊界布局管理器為例,演示布局管理器的使用。創(chuàng)建一個(gè)窗口,通過(guò)BorderLayout的構(gòu)造方法將窗口分割為五個(gè)區(qū)域,并在每個(gè)區(qū)域添加一個(gè)標(biāo)簽按鈕。Example11.java源代碼12.4布局管理器案例演示案例的運(yùn)行結(jié)果如下圖所示。12.4布局管理器案例演示當(dāng)注釋掉Example11.java文件中的第15行代碼后,WEST、CENTER和EAST區(qū)域依舊會(huì)根據(jù)定義的順序進(jìn)行布局。如下圖所示。事件處理機(jī)制12.512.5事件處理機(jī)制掌握事件處理機(jī)制,能夠?yàn)镾wing常用組件注冊(cè)事件監(jiān)聽(tīng)器

先定一個(gè)小目標(biāo)!12.5事件處理機(jī)制前面基于Swing開(kāi)發(fā)的圖形用戶界面僅僅是靜態(tài)的,不能與用戶進(jìn)行交互。如果想要使界面具有交互性,需要為組件添加事件驅(qū)動(dòng)。Swing采用事件驅(qū)動(dòng)的編程模型,通過(guò)事件驅(qū)動(dòng),程序可以捕捉和響應(yīng)用戶在界面上的各種操作,從而實(shí)現(xiàn)界面與用戶的交互。12.5事件處理機(jī)制事件驅(qū)動(dòng)編程模型中,主要有以下三個(gè)部分組成。事件源(EventSource):事件發(fā)生的場(chǎng)所,通常就是產(chǎn)生事件的組件,例如窗口、按鈕、菜單等。事件對(duì)象(Event):GUI組件上發(fā)生的特定事件,通常就是用戶的一次操作。監(jiān)聽(tīng)器(Listener):負(fù)責(zé)監(jiān)聽(tīng)事件源上發(fā)生的事件,并對(duì)各種事件做出相應(yīng)處理的對(duì)象。12.5事件處理機(jī)制事件處理的工作流程如下圖所示。12.5事件處理機(jī)制不同的事件需要使用不同的監(jiān)聽(tīng)器進(jìn)行監(jiān)聽(tīng),不同的監(jiān)聽(tīng)器需要實(shí)現(xiàn)不同的監(jiān)聽(tīng)器接口,監(jiān)聽(tīng)接口中定義了一個(gè)或者多個(gè)抽象的事件處理方法,每個(gè)方法處理的事件和觸發(fā)的時(shí)機(jī)都不相同,通常將監(jiān)聽(tīng)器中重寫(xiě)監(jiān)聽(tīng)器接口的方法稱為事件處理器。當(dāng)指定事件發(fā)生后,監(jiān)聽(tīng)器就會(huì)調(diào)用所包含的事件處理器來(lái)處理事件。12.5事件處理機(jī)制常見(jiàn)的事件、監(jiān)聽(tīng)器、接口和處理器之間的對(duì)應(yīng)關(guān)系如下表所示。事件監(jiān)聽(tīng)器接口事件處理器觸發(fā)時(shí)機(jī)ActionEventActionListeneractionPerformed()按鈕、菜單項(xiàng)被單擊時(shí)觸發(fā)MouseEventMouseListenermouseClicked()在某個(gè)組件上單擊時(shí)觸發(fā)mouseEntered()鼠標(biāo)指針進(jìn)入某個(gè)組件時(shí)觸發(fā)mouseExited()鼠標(biāo)指針離開(kāi)某個(gè)組件時(shí)觸發(fā)mousePressed()在某個(gè)組件上按下鼠標(biāo)時(shí)觸發(fā)mouseReleased()在某個(gè)組件上松開(kāi)鼠標(biāo)時(shí)觸發(fā)MouseMotionListenermouseDragged()在某個(gè)組件上移動(dòng)鼠標(biāo)指針,且按下鼠標(biāo)鍵時(shí)觸發(fā)mouseMoved()在某個(gè)組件上移動(dòng)鼠標(biāo)指針,且沒(méi)有按下鼠標(biāo)鍵時(shí)觸發(fā)12.5事件處理機(jī)制接上頁(yè)表格。事件監(jiān)聽(tīng)器接口事件處理器觸發(fā)時(shí)機(jī)KeyEventKeyListener

keyPressed()按下某個(gè)鍵時(shí)觸keyReleased()釋放某個(gè)按鍵時(shí)觸發(fā)keyType()按某個(gè)按鍵時(shí)觸發(fā)FocusEventFocusListener

focusGained()組件得到焦點(diǎn)時(shí)觸發(fā)focusLost()組件失去焦點(diǎn)時(shí)觸發(fā)需要給指定的組件(事件源)注冊(cè)監(jiān)聽(tīng)器時(shí),可以通過(guò)addXxx()方法實(shí)現(xiàn),其中Xxx為監(jiān)聽(tīng)器接口的名稱。例如,btn為按鈕對(duì)象,btn.addActionListener()即為按鈕btn注冊(cè)動(dòng)作監(jiān)聽(tīng)器。12.5事件處理機(jī)制案例演示下面以按鈕的單擊事件為例講解動(dòng)作事件監(jiān)聽(tīng)器的應(yīng)用。Example12.java源代碼12.5事件處理機(jī)制案例演示案例的運(yùn)行結(jié)果如下圖所示。單擊“助力”按鈕。單擊后的結(jié)果如下圖所示?!景咐?2-1】簡(jiǎn)易記事本案例描述本案例要求利用JavaSwing圖形組件開(kāi)發(fā)一個(gè)圖形化簡(jiǎn)易記事本。記事本功能包括打開(kāi)指定路徑下的文本、文本編輯、保存文本到指定路徑、退出。該記事本的效果圖如下圖所示?!景咐?2-2】會(huì)員充值窗口案例描述為了提高顧客的回頭率,一些店鋪會(huì)長(zhǎng)期推出會(huì)員充值活動(dòng)。顧客充值不僅可以享受價(jià)格優(yōu)惠,而且還可以獲得一些充值回饋。本案例要求開(kāi)發(fā)一個(gè)會(huì)員充值功能,充值窗口如下圖所示?!景咐?2-2】會(huì)員充值窗口案例描述為了增加用戶充值的安全性,以及服務(wù)員在操作用戶充值的便利性,用戶充值窗口中輸入的手機(jī)號(hào)和充值金額都會(huì)進(jìn)行按照下列規(guī)則校驗(yàn),具體如下。輸入的手機(jī)號(hào)不能為空,并且必須符合手機(jī)號(hào)的正確格式。如果輸入的手機(jī)號(hào)符合要求,則會(huì)根據(jù)手機(jī)號(hào)查詢手機(jī)號(hào)對(duì)應(yīng)賬戶的余額和積分,并且在會(huì)員充值窗口中顯示。充值金額不能為空,并且需要大于0,并且如果選擇了充值優(yōu)惠活動(dòng),則充值金額需要大于或等于優(yōu)惠活動(dòng)的起點(diǎn)線,例如,選擇“充300送20”優(yōu)惠活動(dòng),則充值金額需要大于或等于300。如果充值的手機(jī)號(hào)之前在系統(tǒng)中不存在,充值時(shí)將該手機(jī)號(hào)作為新會(huì)員的信息存入系統(tǒng)的數(shù)據(jù)庫(kù)。JavaFX12.612.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝熟悉JavaFX和可視化布局工具安裝,能夠簡(jiǎn)述JavaFX是什么,并對(duì)JavaFX和SceneBuilder進(jìn)行安裝配置

先定一個(gè)小目標(biāo)!12.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝JavaFX是Java平臺(tái)上的富客戶端開(kāi)發(fā)工具包,提供給了豐富的圖形界面組件。JavaFX引入了基于XML的用戶界面標(biāo)記語(yǔ)言FXML,可以用于描述JavaFX界面的結(jié)構(gòu)和屬性,程序基于FXML可以實(shí)現(xiàn)界面布局和邏輯處理之間的分離,使得界面設(shè)計(jì)和開(kāi)發(fā)可以更好地組織和管理。12.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝為了更便捷的設(shè)計(jì)和布局JavaFX界面,可以使用可視化工具SceneBulider,它是一個(gè)用于創(chuàng)建JavaFX用戶界面的可視化布局工具?;赟ceneBuilder可以通過(guò)拖拽的方式輕松創(chuàng)建和組織用戶界面的各種組件,完成界面設(shè)計(jì)后,SceneBuilder將自動(dòng)生成對(duì)應(yīng)的FXML文件,開(kāi)發(fā)者可以將FXML文件與Java代碼集成,從而構(gòu)建完整應(yīng)用程序。12.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝1.安裝JavaFX啟動(dòng)IDEA后單擊左側(cè)列表的Plugins,右側(cè)會(huì)展示插件管理的界面,默認(rèn)展示的是當(dāng)前已安裝的插件,如下圖所示。12.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝1.安裝JavaFX在插件管理界面的搜索框中輸入JavaFX,查看是否已經(jīng)安裝好JavaFX插件。如果已經(jīng)安裝JavaFX結(jié)果如下圖所示。12.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝1.安裝JavaFX如果沒(méi)有安裝JavaFX插件,可以在界面選擇Marketplace后,在搜索框輸入JavaFX,找到對(duì)應(yīng)的插件后單擊“Install”進(jìn)行安裝即可。12.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝2.安裝和配置SceneBuilder為了JavaFX可以和SceneBuilder自動(dòng)結(jié)合使用,在安裝好SceneBuilder后需要對(duì)SceneBuilder進(jìn)行關(guān)聯(lián)。在IDEA的歡迎窗口中單擊左側(cè)的“Customize”選項(xiàng),在展開(kāi)的界面中單擊“Allsettings”,進(jìn)入Settings對(duì)話框,在Settings對(duì)話框中依次選擇“Languages&Frameworks”→“JavaFX”,進(jìn)入設(shè)置SceneBuilder路徑的界面,具體如右圖所示。12.6.1JavaFX簡(jiǎn)介和可視化布局工具的安裝2.安裝和配置SceneBuilder在設(shè)置SceneBuilder路徑的界面設(shè)置SceneBuilder的路徑,具體如下圖所示。12.6.2JavaFX應(yīng)用程序入門(mén)掌握J(rèn)avaFX應(yīng)用程序入門(mén),能夠基于JavaFX和SceneBuilder實(shí)現(xiàn)JavaFX入門(mén)程序

先定一個(gè)小目標(biāo)!12.6.2JavaFX應(yīng)用程序入門(mén)通過(guò)JavaFX結(jié)合SceneBuilder可以幫助開(kāi)發(fā)者輕松地設(shè)計(jì)JavaFX界面,下面基于JavaFX和SceneBuilder實(shí)現(xiàn)一個(gè)JavaFX入門(mén)程序,該程序需要設(shè)計(jì)一個(gè)用戶登錄界面,并實(shí)現(xiàn)用戶登錄功能。12.6.2JavaFX應(yīng)用程序入門(mén)1.創(chuàng)建項(xiàng)目在IDEA中創(chuàng)建一個(gè)名稱為chapter1202的Java項(xiàng)目,然后在項(xiàng)目的src目錄下創(chuàng)建包c(diǎn)om.itheima,并在該包下依次創(chuàng)建文件LoginApp.java、LoginController.java、login.fxml。LoginApp.java文件:用于啟動(dòng)用戶登錄程序。LoginController.java文件:用于實(shí)現(xiàn)界面布局關(guān)聯(lián)的業(yè)務(wù)邏輯。login.fxml文件:用于實(shí)現(xiàn)用戶登錄界面布局。12.6.2JavaFX應(yīng)用程序入門(mén)1.創(chuàng)建項(xiàng)目使用JavaFX開(kāi)發(fā)應(yīng)用程序時(shí),需要添加JavaFX對(duì)應(yīng)的JAR文件作為項(xiàng)目的依賴。在項(xiàng)目的根路徑創(chuàng)建一個(gè)名稱為lib的文件夾,將JAR文件添加到lib文件夾,并右擊lib文件夾選擇“AddasLibrary”將文件夾中的JAR文件應(yīng)用到項(xiàng)目中。此時(shí),項(xiàng)目的目錄結(jié)構(gòu)如右圖所示。12.6.2JavaFX應(yīng)用程序入門(mén)2.設(shè)計(jì)用戶登錄界面右擊login.fxml,在彈出的菜單中選擇“OpenInSceneBuilder”,使用SceneBuilder打開(kāi)login.fxml文件,打開(kāi)后的窗口如下圖所示。12.6.2JavaFX應(yīng)用程序入門(mén)2.設(shè)計(jì)用戶登錄界面將用戶登錄界面所需的組件拖入中間的界面設(shè)計(jì)區(qū)域,并進(jìn)行位置的調(diào)整。調(diào)整用戶登錄界面后login.fxml窗口如下圖所示。12.6.2JavaFX應(yīng)用程序入門(mén)2.設(shè)計(jì)用戶登錄界面為了用戶登錄界面更美觀,以及后續(xù)更好地操作界面中的組件,需要對(duì)組件的一些屬性進(jìn)行設(shè)置,及添加對(duì)應(yīng)的監(jiān)聽(tīng)器,具體步驟如下。修改組件的text屬性值。對(duì)組件進(jìn)行自定義標(biāo)識(shí)。設(shè)置按鈕的單擊執(zhí)行方法。12.6.2JavaFX應(yīng)用程序入門(mén)2.設(shè)計(jì)用戶登錄界面修改用戶登錄界面后,login.fxml窗口如下圖所示。12.6.2JavaFX應(yīng)用程序入門(mén)3.實(shí)現(xiàn)界面布局管理的業(yè)務(wù)邏輯在SceneBuilder中可以生成一個(gè)FXML文件對(duì)應(yīng)控制器的骨架代碼,生成的骨架代碼并不包含任何真正的邏輯,開(kāi)發(fā)者需要根據(jù)自己的需求來(lái)編寫(xiě)實(shí)際的事件處理、數(shù)據(jù)綁定和其他業(yè)務(wù)邏輯。單擊login.fxml窗口左側(cè)的“Controller”選項(xiàng),在選項(xiàng)的“Controllerclass”文本框中輸入或選取login.fxml文件對(duì)應(yīng)業(yè)務(wù)邏輯代碼的控制器。12.6.2JavaFX應(yīng)用程序入門(mén)3.實(shí)現(xiàn)界面布局管理的業(yè)務(wù)邏輯指

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論