版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
圖形用戶界面設(shè)計項目五高等院校公共課系列精品教材Java開發(fā)綜合實戰(zhàn)遵循人的認知心理和行為方式,樹立科學、正確的審美觀??缭綄W科界限實現(xiàn)多學科交叉,培養(yǎng)復合型人才。思政目標能夠使用常用容器和組件創(chuàng)建圖形用戶界面能夠利用布局管理器對界面組件進行合理布局技能目標通過圖形用戶界面(GraphicUserInterface,GUI),用戶可以和程序進行交互。Java在javax.swing包中提供了強大的用于開發(fā)桌面程序的API,方便用戶設(shè)計圖形用戶界面,并進行GUI事件處理。JavaSwing是Java的一個龐大分支,主要用來開發(fā)GUI程序,本項目簡要介紹使用其中具有代表性的幾個Swing組件制作圖形用戶界面的方法。項目導讀任務(wù)1初識JavaSwing任務(wù)2創(chuàng)建常用容器與布局任務(wù)3使用常用組件知識梳理初識JavaSwing任務(wù)1任務(wù)1初識JavaSwing任務(wù)引入通過前面幾個項目的學習,小白創(chuàng)建了一個控制臺版本的進銷存管理系統(tǒng)。由于操作不直觀,小白想為進銷存管理系統(tǒng)創(chuàng)建圖形用戶界面。在Java中,使用哪些工具包可以創(chuàng)建圖形用戶界面呢?知識準備一、Swing概述Java早期進行用戶界面設(shè)計時,主要使用Java抽象窗口工具包(AbstractWindowToolkit,簡稱AWT)java.awt提供的用于設(shè)計GUI的組件類。javax.swing包(簡稱Swing)是隨JDK1.2推出的一個新的包,提供了功能更為強大的設(shè)計GUI的類。java.awt和javax.swing包中部分類的層次關(guān)系的UVML類圖如圖所示。任務(wù)1初識JavaSwing提示:Swing組件在AWT組件名稱的基礎(chǔ)上增加了一個字母“J”作為前綴。部分類的層次關(guān)系二、容器容器是GUI設(shè)計中必不可少的一種界面元素,是用來放置其他組件的一種特殊部件。在Java中,Container的子類或間接子類創(chuàng)建的對象稱為容器。提示:容器本身也是一個組件,因此可以把一個容器添加到另一個容器中實現(xiàn)容器的嵌套。Java類庫中提供了豐富的容器類,為選擇與創(chuàng)建容器帶來了極大的便捷。下面簡要介紹兩種常用容器:底層容器和面板容器。1.底層容器底層容器是指最外層的容器,即包含所有組件或容器的那層容器。2.面板容器面板是一種沒有邊框、沒有標題欄的中間層容器。常見的面板容器有兩種:一種是普通的面板容器;另一種是帶滾動視圖的容器。任務(wù)1初識JavaSwing三、組件在Java中,Component類的子類或間接子類創(chuàng)建的對象稱為組件。常用的Swing組件如表所示。任務(wù)1初識JavaSwing創(chuàng)建常用容器與布局任務(wù)2任務(wù)引入了解了創(chuàng)建圖形用戶界面的基本工具和概念,小白著手學習創(chuàng)建最基本的窗體、對話框和容納各種組件的面板。一個圖形用戶界面通常會包含多種組件,怎樣排列布局這些組件呢?知識準備基于GUI的應(yīng)用程序應(yīng)當提供一個能與操作系統(tǒng)直接交互的底層容器,該容器可以被直接顯示在操作系統(tǒng)所控制的平臺上,例如顯示器上。其他組件要與操作系統(tǒng)進行信息交互,就必須被添加到底層容器中,否則用戶無法看見組件,更無法通過組件進行交互。任務(wù)2創(chuàng)建常用容器與布局一、JFrame窗體JFrame類是Component的子類,也是Container類的間接子類。JFrame類的實例是一個底層容器,通常也稱為窗體。在開發(fā)應(yīng)用程序時,可以通過繼承JFrame類或直接使用JFrame類的實例創(chuàng)建一個窗體。在Java應(yīng)用程序中創(chuàng)建JFrame窗體的一般操作過程為:創(chuàng)建窗體→定位窗體→指定窗體關(guān)閉方式→指定窗體可見性。1.創(chuàng)建窗體窗體可以使用JFrame或其子類創(chuàng)建任務(wù)2創(chuàng)建常用容器與布局注意:窗體默認被系統(tǒng)添加到顯示器屏幕上,因此不允許將一個窗體添加到另一個容器中。2.定位窗體定位窗體包括設(shè)置窗體大小和顯示位置。3.指定窗體擴展和關(guān)閉方式JFrame窗體具有“最大化”“最小化”和“關(guān)閉”等按鈕。4.指定窗體可見性JFrame窗體在創(chuàng)建后默認是不可見的,因此,必須在程序中調(diào)用setVisible()方法顯示窗體,其參數(shù)值為true或false。任務(wù)2創(chuàng)建常用容器與布局案例——創(chuàng)建窗體示例本案例通過繼承JFrame類,演示創(chuàng)建JFrame窗體的操作方法。(1)在Eclipse中新建一個名為SwingDemo的項目,然后在項目中添加一個名為JFWindow的類。(2)在編輯器中引入包,編寫代碼定義繼承類,然后編寫主方法創(chuàng)建窗體。(3)運行程序,即可在屏幕指定位置彈出指定大小的對話框,如圖所示。任務(wù)2創(chuàng)建常用容器與布局創(chuàng)建的JFrame窗體二、JDialog對話框JDialog繼承了AWT組件中的java.awt.Dialog類,用于創(chuàng)建Swing對話框。在應(yīng)用程序中創(chuàng)建JDialog窗體需要實例化JDialog類,通常使用以下幾個JDialog類的構(gòu)造方法。publicJDialog():創(chuàng)建一個沒有標題和父窗體的對話框。publicJDialog(Framef):創(chuàng)建一個指定父窗體的對話框,沒有標題。publicJDialog(Framef,booleanmodel):創(chuàng)建一個指定類型的對話框,并指定父窗體f,沒有標題。publicJDialog(Framef,Stringtitle):創(chuàng)建一個指定標題和父窗體的對話框。publicJDialog(Framef,Stringtitle,booleanmodel):創(chuàng)建一個指定標題、父窗體和模式的對話框。任務(wù)2創(chuàng)建常用容器與布局三、JPanel面板JPanel也是一種常用的容器種類。在Java應(yīng)用程序中,使用JPanel面板容器的基本步驟如下:(1)定義一個JPanel類的子類,并實例化一個對象。JPanel類提供了如下兩種格式的構(gòu)造方法:JPanel():創(chuàng)建一個布局管理器為FlowLayout的面板容器。JPanel(LayoutManagerlayout):這個構(gòu)造方法將創(chuàng)造一個布局管理器為layout的面板容器。(2)使用getContentPane().add()方法將面板放置到窗體中。任務(wù)2創(chuàng)建常用容器與布局四、JScrollPane面板如果某個界面中的組件較多,或某個組件的內(nèi)容較多,由于屏幕大小的限制,有時不能在同一屏中顯示界面中的全部組件,此時,可以使用帶滾動功能的視圖容器。JScrollPane類實現(xiàn)了一個帶有滾動條的面板,用于為不自帶滾動條的組件添加滾動條。例如,通常將文本區(qū)組件JTextArea放置到滾動面板中:JScrollPanescrollpane=newJScrollPane(newJlextArea());滾動面板中只可以添加一個組件,然后通過滾動條來觀看該組件。JScrollPane類提供了一些方法設(shè)置滾動面板顯示的組件,以及滾動條的顯示策略,如表所示。任務(wù)2創(chuàng)建常用容器與布局任務(wù)2創(chuàng)建常用容器與布局五、布局管理器在圖形用戶界面中,每個組件在容器中都有具體的位置和大小。使用布局管理器則可以使容器中的組件按照指定的策略進行擺放,管理整個窗體的布局。不僅如此,如果改變?nèi)萜鞯拇笮。季止芾砥饕部梢詼蚀_地把組件放到指定的位置,從而有效地避免版面出現(xiàn)混亂。在Java中,容器使用setLayout()方法設(shè)置布局。Swing提供了5種布局管理器:FlowLayout(流式布局管理器)、BorderLayout(邊界布局管理器)、GridLayout(網(wǎng)格布局管理器)、CardLayout(卡片布局管理器)和GridBagLayout(網(wǎng)格包布局管理器)。任務(wù)2創(chuàng)建常用容器與布局1.流式布局管理器(FlowLayout)FlowLayout被稱為流布局管理器,它是JPanel面板容器的默認布局管理器。FlowLayout類提供了以下3種格式的構(gòu)造方法用于創(chuàng)建布局對象。(1)FlowLayout():(2)FlowLayout(intalign):(3)FlowLayout(intalign,inthgap,intvgap):2.邊界布局管理器(BorderLayout)BorderLayout類提供了以下兩種格式的構(gòu)造方法。(1)BorderLayout():(2)BorderLayout(inthgap,intvgap):任務(wù)2創(chuàng)建常用容器與布局
BorderLayout布局方式3.網(wǎng)格布局管理器(GridLayout)GridLayout類提供了以下3種格式的構(gòu)造方法。(1)GridLayout():(2)GridLayout(introws,intcols):(3)GridLayout(introws,intcols,inthgap,intvgap):4.卡片布局管理器(CardLayout)假設(shè)有一個容器c,使用CardLayout的一般步驟如下。(1)調(diào)用CardLayout類的構(gòu)造方法創(chuàng)建CardLayout布局對象(2)調(diào)用容器的setLayout()方法設(shè)置容器布局(3)容器調(diào)用add(Strings,Componenta)方法將組件a加入容器c,并指定顯示該組件的代號s。任務(wù)2創(chuàng)建常用容器與布局(4)使用CardLayout類的方法(如表所示)顯示組件。任務(wù)2創(chuàng)建常用容器與布局5.網(wǎng)格包布局管理器(GridBagLayout)使用GridBagLayout布局管理器的步驟如下:(1)創(chuàng)建GridbagLayout布局管理器,并設(shè)置容器采用該布局管理器。(2)創(chuàng)建GridBagContraints布局約束對象,并設(shè)置該對象的相關(guān)屬性。(3)調(diào)用GridBagLayout對象的setConstraints()方法建立GridBagConstraints對象和受控組件之間的關(guān)聯(lián)。(4)向容器中添加組件:container.add(component);任務(wù)2創(chuàng)建常用容器與布局提示:如果將GridBagConstraints對象的屬性gridx和gridy的值設(shè)置為GridBagConstraints.RELATIVE,表示當前組件緊跟在上一個組件之后。如果將gridheight和gridwidth屬性的值設(shè)置為GridBagConstraints.RELATIVE,表示當前組件為所在行或列上倒數(shù)第二個組件;屬性值為GridBagConstraints.REMAINDER,則表示當前組件為所在行或列上的最后一個組件。GridBagConstraints對象可以重復使用,只需要改變它的屬性即可。任務(wù)2創(chuàng)建常用容器與布局6.自定義布局自定義布局的步驟如下:(1)容器調(diào)用setLayout(null)方法取消布局管理器。(2)組件調(diào)用Component.setBounds()方法設(shè)置每個組件的大小與位置。也可以調(diào)用容器中每個組件的setSize()和setLocation()方法分別設(shè)置大小和位置。任務(wù)2創(chuàng)建常用容器與布局使用常用組件任務(wù)3任務(wù)引入通過上一個任務(wù)的學習,小白學會了創(chuàng)建常用的幾種容器,以及設(shè)置容器的布局方式。接下來就可以在容器中添加各種常用的組件了。知識準備組件是應(yīng)用程序界面中的重要組成元素,豐富的組件種類構(gòu)成了強大的軟件開發(fā)資源。在程序開發(fā)過程中,根據(jù)不同的需求,選擇適合的組件是一件技術(shù)性很強的工作,它關(guān)系到應(yīng)用程序界面的美觀性、適用性、方便性和安全性。任務(wù)3使用常用組件一、標簽組件JLabel組件用于通過顯示文本和圖標提供提示信息,可以只顯示其中之一,也可以兩者同時顯示。JLabel類提供了多種構(gòu)造方法,用于創(chuàng)建多種形式的標簽,常用的構(gòu)造方法如下:publicJLabel():創(chuàng)建一個不帶圖標和文本的標簽。publicJLabel(Iconicon):創(chuàng)建一個帶圖標的標簽。publicJLabel(lconicon,intalign):創(chuàng)建一個帶圖標的標簽,圖標的水平對齊方式為align。任務(wù)3使用常用組件其中,水平對齊方式的取值為JLabel類中與水平布置方式有關(guān)的靜態(tài)常量LEFT、CENTER、RIGHT。publicJLabel(Stringtext,intalign):創(chuàng)建一個帶文本的標簽,文字水平對齊方式為align。publicJLabel(Stringtext,Iconicon,intalign):創(chuàng)建一個帶文本和圖標的標簽,標簽內(nèi)容的水平對齊方式為align。JLabel類還提供了一些用于設(shè)置標簽的方法,如表所示。任務(wù)3使用常用組件在設(shè)置標簽文字相對于圖片的顯示位置時,參數(shù)textPostion的取值為JLabel類中與垂直布置方式有關(guān)的靜態(tài)常量TOP、CENTER、BOTTOM,說明如表所示。任務(wù)3使用常用組件如果要將一個圖像顯示在標簽中,可以直接使用Icon接口和Imagelcon子類。lmagelcon類實現(xiàn)了Icon接口,可以根據(jù)現(xiàn)有圖片創(chuàng)建圖標。lmagelcon類提供了多個構(gòu)造方法創(chuàng)建ImageIcon對象,下面簡要介紹幾個常用的構(gòu)造方法。publicImagelcon():創(chuàng)建一個通用的Imagelcon對象。在后續(xù)的步驟中,需要使用該對象調(diào)用setlmage(Imageimage)方法設(shè)置圖片。publicImagelcon(Stringfilename):直接從指定的圖片源創(chuàng)建圖標。publicImagelcon(Stringfilename,Stringdescription):從指定的圖片源創(chuàng)建圖標,同時為圖標添加簡短的描述。描述不會顯示在圖標上。publicImagelcon(URLlocation):利用位于計算機網(wǎng)絡(luò)上的圖像文件創(chuàng)建圖標。任務(wù)3使用常用組件案例——創(chuàng)建帶圖標的標簽本案例將指定的圖片轉(zhuǎn)換為圖標,創(chuàng)建一個帶圖標的標簽。(1)打開項目SwingDemo,在項目中新建一個名為FirstImageIcon的類。(2)運行文件,即可在指定位置顯示創(chuàng)建的窗體,并在窗體中居中顯示帶圖標的標簽,如圖所示。任務(wù)3使用常用組件
運行結(jié)果二、文本組件1.文本框組件(JTextField)JTextField組件實現(xiàn)一個文本框,用于接收用戶輸入的單行文本信息。JTextField類中幾個常用的構(gòu)造方法簡要說明如下:publicJTextField():publicJTextField(Stringtext):publicJTextField(intfieldwidth):publicJTextField(Stringtext,intfieldwidth):任務(wù)3使用常用組件2.密碼框組件(JPasswordField)JPasswordField組件實現(xiàn)一個密碼框,用來接收用戶輸入的單行文本信息,創(chuàng)建、使用方法與JTextField組件基本相同。3.文本域組件(JTextArea)JTextArea組件實現(xiàn)一個文本域,文本域可以接收用戶輸入的多行文本。JTextArea類中幾個常用的構(gòu)造方法簡要說明如下:publicJTextArea():publicJTextArea(Stringtext):publicJTextArea(introws,intcolumns):publicJTextArea(Documentdoc):publicJTextArea(Documentdoc,StringText,introws,intcolumns):任務(wù)3使用常用組件三、按鈕組件按鈕在圖形界面中是較為常見的組件,用于觸發(fā)特定動作。Swing提供多種按鈕,例如JButton、JRadioButton、JCheckBox等。本節(jié)簡要介紹這三種按鈕的功能和使用方法。1.普通按鈕組件(JButton)JButton類的主要構(gòu)造方法有以下幾種:publicJButton():創(chuàng)建一個Button對象。publicJButton(Stringtext):創(chuàng)建一個顯示標簽文字的Button對象。publicJButton(Iconicon):創(chuàng)建一個帶圖標的按鈕。publicJButton(Stringtext,Iconicon):創(chuàng)建一個帶標簽文字和圖標的按鈕。任務(wù)3使用常用組件案例——創(chuàng)建動態(tài)圖片按鈕本案例制作一個不同狀態(tài)下顯示不同圖片的動態(tài)按鈕。(1)打開項目SwingDemo,在項目中新建一個名為ImageButton的類。(2)運行程序,即可在指定位置創(chuàng)建一個窗體,并默認在窗體中間區(qū)域顯示按鈕,如圖示。任務(wù)3使用常用組件2.單選按鈕組件(JRadioButton)JRadioButton組件實現(xiàn)一個單選按鈕,可以單獨使用,也可以與ButtonGroup類聯(lián)合使用。JRadioButon類的常用構(gòu)造方法主要有以下幾種形式。publicJRadioButton():publicJRadioButton(Iconicon):publicJRadioButton(Iconicon,booleanselected):publicJRadioButton(Stringtext):publicJRadioButton(Stringtext,Iconicon):publicJRadioButton(Stringtext,Iconicon,booleanselected):任務(wù)3使用常用組件3.復選框組件(JCheckBox)JCheckBox類的對象實現(xiàn)一個復選框按鈕。與單選按鈕類似,復選框也用于提供多項選擇,單擊該組件可在選中和未選中兩種狀態(tài)之間進行切換。JCheckBox的常用構(gòu)造方法有以下幾種:publicJCheckBox():publicJCheckBox(Iconicon,booleanchecked):publicJCheckBox(Stringtext,booleanchecked):任務(wù)3使用常用組件四、列表組件Swing提供了兩種列表組件:下拉列表框(JComboBox)與列表框(JList)。這兩種列表組件都以列表的形式提供一系列的預設(shè)選擇項,對于美化版面和空間有限的界面來說,是非常不錯的選擇。1.下拉列表框組件(JComboBox)JComboBox類的常用構(gòu)造方法有以下幾種:publicJComboBox():publicJComboBox(ComboBoxModeldataModel):ComboBoxModel是一個代表一般模型的接口,可以自定義一個類實現(xiàn)該接口,且必須實現(xiàn)以下兩種方法:publicvoidsetSelectedltem(Objectitem):publicObjectgetSelectedltem():任務(wù)3使用常用組件在實現(xiàn)ComboBoxModel接口時,還可以繼承AbstractListModel類,以便使用其中兩個操作下拉列表框的重要方法:getsize()方法返回列表的長度;getElementAt(intindex)方法返回指定索引處的值。publicJComboBox(Object[]arrayData):publicJComboBox(Vectorvector):構(gòu)造JComboBox對象后,利用下面幾個常用的方法可以方便地操作下拉列表框:addItem(Objectobj):添加列表項。getItemCount():返回列表項的個數(shù)。removeItem(Objectobj):移除列表項。setEditable(Booleanflag):設(shè)置列表項是否可編輯。任務(wù)3使用常用組件2.列表框組件(JList)JList類的常用構(gòu)造方法有以下幾種:publicvoidJList():publicvoidJList(Object[]listData):publicvoidJList(Vect
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人房產(chǎn)交易稅費收據(jù)模板制作服務(wù)協(xié)議2篇
- 教育技術(shù)在培養(yǎng)學生自主學習能力中的作用與挑戰(zhàn)
- 2025年度魚塘承包與漁業(yè)信息化管理合作協(xié)議4篇
- 未來教育的趨勢以小學科學教學中的項目式學習為例談科技教育的長遠影響
- 二零二五年度車庫房租賃與車位租賃及物業(yè)管理合同4篇
- 現(xiàn)代科技在農(nóng)村房屋墻體材料優(yōu)化中的應(yīng)用
- 2025版?zhèn)€人二手房交易合同含房屋質(zhì)量保證承諾
- 二零二五年度木工欄桿安裝工程勞務(wù)分包及綠色認證合同4篇
- 探索星系間的聯(lián)系解開宇宙的秘密線索
- 杭州浙江杭州市丁信中學編外招聘筆試歷年參考題庫附帶答案詳解
- 創(chuàng)新者的窘境讀書課件
- 綜合素質(zhì)提升培訓全面提升個人綜合素質(zhì)
- 如何克服高中生的社交恐懼癥
- 聚焦任務(wù)的學習設(shè)計作業(yè)改革新視角
- 淋巴瘤患者的護理
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)三 APP的品牌建立與價值提供
- 電子競技范文10篇
- 食堂服務(wù)質(zhì)量控制方案與保障措施
- VI設(shè)計輔助圖形設(shè)計(2022版)
- 眼科學??己喆痤}
- 物料分類帳的應(yīng)用
評論
0/150
提交評論