輕松學(xué)Java之圖形界面編程課件_第1頁(yè)
輕松學(xué)Java之圖形界面編程課件_第2頁(yè)
輕松學(xué)Java之圖形界面編程課件_第3頁(yè)
輕松學(xué)Java之圖形界面編程課件_第4頁(yè)
輕松學(xué)Java之圖形界面編程課件_第5頁(yè)
已閱讀5頁(yè),還剩119頁(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)介

第16章圖形界面編程圖形用戶界面(GraphicalUserInterface)簡(jiǎn)稱GUI,提供了一種更加直觀、友好的與用戶進(jìn)行交互的方式。利用Java語(yǔ)言進(jìn)行圖形用戶界面操作主要由java.awt和javax.swing兩個(gè)包來(lái)完成。其中,AWT包是圖形用戶界面處理的基本工具包,Swing包在AWT包的基礎(chǔ)上進(jìn)行了升級(jí)、擴(kuò)展,具有更加強(qiáng)大的圖形界面開(kāi)發(fā)功能。本章在了解AWT包功能的基礎(chǔ)上,重點(diǎn)講解Swing的功能。1ppt課件第16章圖形界面編程圖形用戶界面(GraphicalU16.1AWT簡(jiǎn)介Java1.0的出現(xiàn)帶來(lái)了抽象窗口工具箱(AWT)。設(shè)計(jì)目標(biāo)是希望構(gòu)建一個(gè)通用的GUI,使得利用它編寫(xiě)的程序能夠運(yùn)行在所有的平臺(tái)上,以實(shí)現(xiàn)Sun公司提出的口號(hào)“一次編寫(xiě),隨處運(yùn)行”。JavaAWT中包含了許多類來(lái)支持GUI設(shè)計(jì)。AWT由Java的java.awt包提供,該包中有許多用來(lái)設(shè)計(jì)GUI的組件類,如按鈕、菜單、列表、文本框等組件類;同時(shí)還包含窗口、面板等容器類。AWT的具體層次結(jié)構(gòu)如圖16.1所示。2ppt課件16.1AWT簡(jiǎn)介Java1.0的出現(xiàn)帶來(lái)了抽象窗口工16.1AWT簡(jiǎn)介Java提供了一系列AWT軟件包,其中主要的包及包的描述如圖16.2所示。3ppt課件16.1AWT簡(jiǎn)介Java提供了一系列AWT軟件包,其中16.1AWT簡(jiǎn)介java.awt包提供了基本的Java程序的GUI設(shè)計(jì)工具。主要包括組件、容器和布局管理器三個(gè)概念,其具體描述如圖16.3所示。4ppt課件16.1AWT簡(jiǎn)介java.awt包提供了基本的Java16.2Swing簡(jiǎn)介Swing是Java基礎(chǔ)類庫(kù)(JavaFoundationClasses)中有關(guān)圖形界面的類庫(kù)。Swing擴(kuò)展自AWT。例如JFrame擴(kuò)展自Frame,JButton擴(kuò)展自Component等?;旧螦WT中的每種控件都能在Swing中找到替代品,比如AWT中的Button對(duì)應(yīng)于Swing中的JButton,AWT中的TextField對(duì)應(yīng)于Swing中的JTextField等。5ppt課件16.2Swing簡(jiǎn)介Swing是Java基礎(chǔ)類庫(kù)(Ja16.2Swing簡(jiǎn)介Swing包是JFC(JavaFoundationClasses)的一部分,它由許多包組成,這些包的名稱及描述如表16.1所示。包名包的描述Com.sum.swing.plaf.motif實(shí)現(xiàn)Motif界面樣式代表類Com.sum.java.swing.plaf.windows實(shí)現(xiàn)Windows界面樣式的代表類javax.swingSwing組件和使用工具javax.swing.borderSwing輕量組件的邊框javax.swing.colorchooserJcolorChooser的支持類/接口javax.swing.event事件和偵聽(tīng)器類javax.swing.filechooserJFileChooser的支持類/接口javax.swing.pending未完全實(shí)現(xiàn)的Swing組件javax.swing.plaf抽象類,定義UI代表的行為javax.swing.plaf.basic實(shí)現(xiàn)所有標(biāo)準(zhǔn)界面樣式公共基類javax.swing.plaf.metal它們實(shí)現(xiàn)Metal界面樣式代表類javax.swing.tableJtable組件javax.swing.text支持文檔的顯示和編輯javax.swing.text.html支持顯示和編輯HTML文檔javax.swing.text.html.parserHtml文檔的分析器javax.swing.text.rtf支持顯示和編輯RTF文件javax.swing.treeJtree組件的支持類javax.swing.undo支持取消操作6ppt課件16.2Swing簡(jiǎn)介Swing包是JFC(JavaF16.3容器類窗口(JFrame)、面板(JPanel)和對(duì)話框(J)是Swing中提供用來(lái)創(chuàng)建表示圖形用戶界面的類。該類的對(duì)象將被當(dāng)作容器使用,所有的Swing組件都必須被添加到容器中,才能被顯示出來(lái)。7ppt課件16.3容器類窗口(JFrame)、面板(JPanel16.3.1JFrame類JFrame是一個(gè)窗口容器組件,可以被顯示在用戶桌面上,同時(shí)也是一個(gè)框架,在其中,可以添加需要的其他的Swing組件。JFrame是少數(shù)幾個(gè)不是通過(guò)繪制的方式顯示的Swing組件。JFrame類的構(gòu)造方法如圖16.5所示。8ppt課件16.3.1JFrame類JFrame是一個(gè)窗口容器組件16.3.1JFrame類JFrame類中還提供了一些與窗口有關(guān)的方法。其主要方法與方法描述如表16.2所示。方法方法描述publicvoidsetVisible(booleanb)判斷窗體是否可見(jiàn)。如果參數(shù)b為true則表示顯示該窗體,否則表示不可見(jiàn)publicvoidsetBackground(Colorc)設(shè)置窗體背景顏色publicvoidsetTitle(Strings)設(shè)置標(biāo)題。其中參數(shù)s表示要顯示在窗體邊界中的標(biāo)題publicStringgetTitle()獲取窗體邊界的標(biāo)題。如果沒(méi)有標(biāo)題則返回空字符串publicvoidpack()調(diào)整適合其子組件的大小和布局窗口的大小publicvoidsetResizable(booleanresizable)設(shè)置窗口大小是否可以調(diào)整publicContainergetContentPane()返回此窗體的contentPane對(duì)象publicvoidsetLayout(LayoutManagermanager)設(shè)置布局管理器publicvoidvalidate()驗(yàn)證容器及其容器中的組件9ppt課件16.3.1JFrame類JFrame類中還提供了一些與16.3.2JDialog類JDialog是一個(gè)用來(lái)創(chuàng)建對(duì)話框的類,是Dialog類的子類。創(chuàng)建的JDialog對(duì)象可以用來(lái)向用戶返回信息,接收用戶的輸入,實(shí)現(xiàn)與用戶的交互。JDialog與JFrame的區(qū)別在于:JDialog對(duì)象需要依賴于其他的對(duì)話框(比如Jframe)而存在,當(dāng)它所依賴的對(duì)話框關(guān)閉或最小化的時(shí)候,該對(duì)話框也隨之關(guān)閉或最小化。10ppt課件16.3.2JDialog類JDialog是一個(gè)用來(lái)創(chuàng)建16.3.2JDialog類JDialog類創(chuàng)建對(duì)話框?qū)ο蟮臉?gòu)造方法如圖16.7所示。JDialog類中的主要方法及方法描述如表16.3所示。方法方法描述StringgetTitle()用于獲取對(duì)話框的名字voidsetTitle(Strings)用于設(shè)置對(duì)話框的名字voidsetModal(booleanb)用于設(shè)置對(duì)話框的模式setSize(intwidth,intheight)用于設(shè)置對(duì)話框的大小voidsetVisible(booleanb)用于設(shè)置對(duì)話框是否可見(jiàn)11ppt課件16.3.2JDialog類JDialog類創(chuàng)建對(duì)話框?qū)?6.3.3

JPanel類在得到了JFrame的內(nèi)容面板后我們就可以直接將其他的Swing組件放在其中,或者直接在上面描繪圖畫(huà)或文字,但是習(xí)慣上一般不會(huì)這么做。通常會(huì)將這些圖畫(huà)或文字信息描繪在名為JPanel的容器上,然后再將JPanel實(shí)例放在內(nèi)容面板上。這樣可以使得面板上的布局更合理。JPanel通常只作為純粹的容器來(lái)使用,它不能像框架、窗口或者對(duì)話框那樣獨(dú)立存在。JPanel的構(gòu)造方法如圖16.9所示。12ppt課件16.3.3JPanel類在得到了JFrame的內(nèi)容面板16.4Swing常用基本組件創(chuàng)建圖形用戶界面GUI,就是為了讓計(jì)算機(jī)程序更好的和用戶交互。JavaSwing提供了二十多種不同的用戶界面組件。所有的Swing組件都是從javax.swing.Jcomponent類中派生而來(lái)的,從而繼承了組件所特有的屬性和方法。13ppt課件16.4Swing常用基本組件創(chuàng)建圖形用戶界面GUI,就16.4.1常用組件的共性操作Swing類庫(kù)中的組件都繼承自javax.swing.JComponent,因此都具有JComponent的操作,包括設(shè)置背景色、設(shè)置前景色、設(shè)置字體以及設(shè)置是否禁用等。表16.4中是JComponent中常用的方法及方法描述。方法方法描述intgetHeight()返回組件高度intgetWidth()返回組件寬度StringgetToolTipText()返回工具提示voidsetToolTipText(Stringtext)設(shè)置工具提示DimensiongetSize(Dimensionrv)返回尺寸intgetX()返回位置xvoidsetBackground(Colorbg)設(shè)置背景色voidsetOpaque(booleanisOpaque)設(shè)置是否透明voidsetVisible(booleanaFlag)設(shè)置是否可見(jiàn)voidsetFont(Fontfont)設(shè)置字體voidsetBorder(Borderborder)設(shè)置邊框14ppt課件16.4.1常用組件的共性操作Swing類庫(kù)中的組件都繼16.4.2按鈕(JButton)按鈕是用戶界面中常用的組件。用戶使用Swing按鈕可以顯示圖像,將整個(gè)按鈕設(shè)置為窗口默認(rèn)圖標(biāo),來(lái)處理鼠標(biāo)在按鈕上的事件。java.swing包中提供了標(biāo)準(zhǔn)的按壓式按鈕(JButton)。同時(shí)提供了選擇式按鈕:多選擇(JCheckBox)、單選擇(JRadioButton)等。我們?cè)谶@里先來(lái)講解JButton的知識(shí)。JButton的構(gòu)造方法如圖16.11所示。15ppt課件16.4.2按鈕(JButton)按鈕是用戶界面中常用的16.4.3文本框(JTextField)與密碼輸入框(JPasswordField)文本框(JTextField)也是一種常見(jiàn)的組件,用于處理一行文本(中間沒(méi)有回車符)。JTextField是JTextComponent的子類。密碼輸入框是JTextField的一個(gè)子類。JTextField和JPasswordField的構(gòu)造函數(shù)形式和常用方法完全一樣。這里只列出JTextField的構(gòu)造函數(shù),如圖16.13所示。16ppt課件16.4.3文本框(JTextField)與密碼輸入框(16.4.4文本域(JTextArea)文本域(JTextArea)也是一種常用組件,用于處理多行文本。JTextArea同JTextField一樣,都是JTextComponent的子類,因此它們的很多操作都類似,我們不再贅述。JTextArea的構(gòu)造函數(shù)如圖16.15所示。17ppt課件16.4.4文本域(JTextArea)文本域(JTex16.4.5標(biāo)簽(JLabel)標(biāo)簽(JLabel)用來(lái)顯示一段文本,常用在JTextField或者JTextArea前面,提示用戶要填寫(xiě)什么樣的信息。JLabel用于顯示文字,也可以同時(shí)顯示文字和圖標(biāo),一般不用于接收鼠標(biāo)鍵盤(pán)的動(dòng)作。JLabel的構(gòu)造方法如圖16.17所示。18ppt課件16.4.5標(biāo)簽(JLabel)標(biāo)簽(JLabel)用來(lái)16.4.6單選按鈕(JRadioButton)JRadioButton用來(lái)實(shí)現(xiàn)單選按鈕組件,按鈕有選中和沒(méi)被選中兩種狀態(tài)。多個(gè)單選按鈕中,一次只能有一個(gè)按鈕處于被選中狀態(tài)。JRadioButton的構(gòu)造方法如圖16.19所示。19ppt課件16.4.6單選按鈕(JRadioButton)JRad16.4.7復(fù)選框(JCheckBox)JCheckBox是用來(lái)實(shí)現(xiàn)JCheckBox的組件。復(fù)選框是一個(gè)可以被選定和取消選定的項(xiàng),它將其狀態(tài)顯示給用戶。一次可以選中多個(gè)復(fù)選框。JCheckBox類的構(gòu)造方法如圖16.21所示。20ppt課件16.4.7復(fù)選框(JCheckBox)JCheckBo16.4.8下拉列表(JComboBox)下拉列表(JComboBox)是一種常見(jiàn)的組件。用戶可以從下列的菜單列表中選擇所需要的數(shù)據(jù)。一個(gè)下拉列表只能選擇一個(gè)選項(xiàng)。JComboBox的構(gòu)造方法如圖16.23所示??梢詫⑿枰谙吕斜碇酗@示的各項(xiàng)放入一個(gè)數(shù)組中,然后利用其相應(yīng)的構(gòu)造方法將數(shù)組元素的各項(xiàng)顯示出來(lái)。21ppt課件16.4.8下拉列表(JComboBox)下拉列表(JC16.4.9列表(JList)JList是用來(lái)表示列表的組件。該組件與下拉列表不同,它可以顯示多個(gè)項(xiàng)目的內(nèi)容,并且允許用戶從列表中選擇一個(gè)或多個(gè)對(duì)象。JList的主要構(gòu)造方法如圖16.25所示。與下拉列表相同,可以將需要顯示的內(nèi)容先放入一個(gè)數(shù)組中,然后使用帶有Object類型數(shù)組為參數(shù)的的構(gòu)造方法創(chuàng)建一個(gè)JList對(duì)象,將列表中各項(xiàng)顯示出來(lái)。22ppt課件16.4.9列表(JList)JList是用來(lái)表示列表的16.4.10滾動(dòng)條(JScrollPane)JscrollPane類的對(duì)象可以創(chuàng)建一個(gè)垂直或者水平方向的滾動(dòng)條。在實(shí)際使用中,它需要和某個(gè)容器相關(guān)聯(lián)。例如,表格、窗體等。JScrollPane類的構(gòu)造方法如圖16.27所示。23ppt課件16.4.10滾動(dòng)條(JScrollPane)Jscro16.5Swing高級(jí)組件16.4小節(jié)中我們介紹了Swing基本組件,但在實(shí)際應(yīng)用中,對(duì)于一些比較復(fù)雜的界面,除了使用這些基本組件之外,還需要使用諸如表格、菜單、工具欄等這些組件。本節(jié)我們就來(lái)介紹Swing中的一些高級(jí)組件的創(chuàng)建和使用,包括表格、樹(shù)、菜單,以及對(duì)話框等組件。24ppt課件16.5Swing高級(jí)組件16.4小節(jié)中我們介紹了Swi16.5.1表格(JTable)表格(JTable)是Swing新增加的組件,主要是為了將數(shù)據(jù)以表格的形式顯示。JTable是一個(gè)用來(lái)顯示和編輯二維單元表格的組件??梢酝ㄟ^(guò)創(chuàng)建一個(gè)二維數(shù)組對(duì)象,并將二維數(shù)組中定義并初始化的值放入到表中。Jtable創(chuàng)建表格的主要構(gòu)造方法如圖16.29所示。25ppt課件16.5.1表格(JTable)表格(JTable)是S16.5.2樹(shù)(JTree)樹(shù)是非常重要也是常用的一種數(shù)據(jù)結(jié)構(gòu)。在計(jì)算機(jī)中也有著廣泛的應(yīng)用,計(jì)算機(jī)中的目錄和文件的存儲(chǔ)結(jié)構(gòu)都是樹(shù)形的。在Swing中,可以使用JTree來(lái)構(gòu)建一個(gè)樹(shù)形結(jié)構(gòu)模型。首先我們可以先舉一個(gè)樹(shù)形結(jié)構(gòu)的例子,例如在“我的電腦”的C盤(pán)下的目錄結(jié)構(gòu),如圖16.31所示。26ppt課件16.5.2樹(shù)(JTree)樹(shù)是非常重要也是常用的一種數(shù)16.5.2樹(shù)(JTree)在這個(gè)圖中我們要注意以下幾點(diǎn):一顆樹(shù)中只有一個(gè)根結(jié)點(diǎn)。其余結(jié)點(diǎn)都是從該結(jié)點(diǎn)引出。除根結(jié)點(diǎn)外。其余結(jié)點(diǎn)要么是沒(méi)有子結(jié)點(diǎn)的結(jié)點(diǎn)要么是帶有子結(jié)點(diǎn)的結(jié)點(diǎn)。沒(méi)有子結(jié)點(diǎn)的結(jié)點(diǎn)稱為葉子結(jié)點(diǎn)。在圖16.31的樹(shù)結(jié)構(gòu)中,“計(jì)算機(jī)”是根結(jié)點(diǎn),“Intel”文件是一個(gè)葉子結(jié)點(diǎn),“NVIDIA”文件是一個(gè)帶有子結(jié)點(diǎn)的結(jié)點(diǎn)。然后我們看JTree的主要的構(gòu)造方法,如圖16.32所示。27ppt課件16.5.2樹(shù)(JTree)在這個(gè)圖中我們要注意以下幾點(diǎn)16.5.3菜單(JMenu)菜單(JMenu)是標(biāo)題欄下面的一行文字部分。菜單是應(yīng)用程序中最常用的組件。菜單的組織方式為:一個(gè)菜單條JMenuBar包含多個(gè)菜單項(xiàng)(JMenuItem)。JMenuItem有兩個(gè)子類,分別為JRadioButtonMenuItem及JCheckBoxMenuItem用于表示單選菜單項(xiàng)和復(fù)選菜單項(xiàng)。28ppt課件16.5.3菜單(JMenu)菜單(JMenu)是標(biāo)題欄16.5.3菜單(JMenu)JMenu組件類的主要構(gòu)造方法如圖16.34所示。創(chuàng)建菜單項(xiàng)的JMenuItem的主要構(gòu)造方法如圖16.35所示。29ppt課件16.5.3菜單(JMenu)JMenu組件類的主要構(gòu)造16.5.4工具欄(JToolBar)工具欄(JToolBar)提供了一種可以快速訪問(wèn)界面中常用命令的方式。通常工具欄應(yīng)該放到邊界布局中的一邊??梢运胶痛怪狈胖茫部梢酝蟿?dòng)工具欄將其放置在想要放置的位置。工具欄一般放到菜單欄的下面,可以把菜單欄中的常用命令放到工具欄中,以方便用戶操作。30ppt課件16.5.4工具欄(JToolBar)工具欄(JTool16.5.4工具欄(JToolBar)Java中可以通過(guò)創(chuàng)建JToolBar對(duì)象來(lái)實(shí)現(xiàn)工具欄。JToolBar的主要構(gòu)造方法如圖16.37所示。orientation參數(shù)可以是以下兩個(gè)值中的任何一個(gè)。SwingConstants.HORIZONTAL表示工具欄以水平方向放置。SwingConstants.VERTICAL表示工具欄以垂直方向放置。31ppt課件16.5.4工具欄(JToolBar)Java中可以通過(guò)16.5.5進(jìn)程條(JprogressBar)進(jìn)程條(JprogressBar)是以圖形化的方式來(lái)描述任務(wù)進(jìn)度的組件。在任務(wù)完成過(guò)程中,進(jìn)度條顯示該任務(wù)完成的百分比,百分比通常用可視化的矩形表示,該矩形開(kāi)始為空,隨著任務(wù)的執(zhí)行,組件被填滿。JprogressBar的主要構(gòu)造方法如圖16.39所示。32ppt課件16.5.5進(jìn)程條(JprogressBar)進(jìn)程條(J16.5.6對(duì)話框(JDialog)對(duì)話框是一種大小不能變化、不能有菜單的容器窗口,對(duì)話框不能作為一個(gè)應(yīng)用程序的主框架,而必須包含在其他的容器中。Java語(yǔ)言提供多種對(duì)話框類來(lái)支持多種形式的對(duì)話框。我們這里只為大家介紹一下簡(jiǎn)單的標(biāo)準(zhǔn)對(duì)話框——JOptionPane。33ppt課件16.5.6對(duì)話框(JDialog)對(duì)話框是一種大小不能16.5.6對(duì)話框(JDialog)JOptionPane提供的對(duì)話框是模式對(duì)話框。使用JOptionPane,可以創(chuàng)建和自定義問(wèn)多種類型的對(duì)話框。JOptionPane類的構(gòu)造方法如圖16.41所示。34ppt課件16.5.6對(duì)話框(JDialog)JOptionPan16.6布局管理器在Java語(yǔ)言中,把創(chuàng)建的組件放置到對(duì)話框中,需要設(shè)置對(duì)話框界面的格式,這時(shí)候就必須使用布局管理器(layoutmanager),來(lái)排列界面上的組件。當(dāng)組件被加入到容器中時(shí),將如何排列,都由布局管理器來(lái)進(jìn)行管理。Java中的布局管理器包括:FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout。當(dāng)創(chuàng)建好需要的布局管理器后,就可以調(diào)用容器的setLayout()方法,來(lái)設(shè)定該容器的布局方式。下面我們?yōu)榇蠹揖唧w介紹幾種主要的布局管理器。35ppt課件16.6布局管理器在Java語(yǔ)言中,把創(chuàng)建的組件放置到對(duì)16.6.1BorderLayout管理器BorderLayout布局管理器將容器劃分為東(East)、西(West)、南(South)、北(North)、中(Center)五個(gè)區(qū)域。它是Frame類的默認(rèn)布局管理器。采用BorderLayout布局時(shí),向容器中添加組件需要指定組件所在的區(qū)域。其大致所分區(qū)域如圖16.43所示。36ppt課件16.6.1BorderLayout管理器BorderL16.6.1BorderLayout管理器BorderLayout類的主要構(gòu)造方法如圖16.44所示。圖中參數(shù)align指定了布局的位置,如表16.5所示。參數(shù)參數(shù)描述BorderLayout.CENTER中間BorderLayout.EAST東邊BorderLayout.WEST西邊BorderLayout.SOUTH南邊BorderLayout.NORTH北邊37ppt課件16.6.1BorderLayout管理器BorderL16.6.2FlowLayout管理器流動(dòng)布局是使用FlowLayout類來(lái)創(chuàng)建的。該布局方式是最簡(jiǎn)單的一種布局管理器,其排列組件的方式是按照:從左到右排列,當(dāng)組件排列到容器行尾時(shí),會(huì)自動(dòng)換行并繼續(xù)排列剩下的組件。它是Panel類的默認(rèn)布局管理器。我們可以調(diào)用相關(guān)方法設(shè)置不同的組件間距、行距以及對(duì)齊方式。FlowLayout管理器的布局示意圖如圖16.46所示。38ppt課件16.6.2FlowLayout管理器流動(dòng)布局是使用Fl16.6.2FlowLayout管理器FlowLayout類的主要構(gòu)造方法如圖16.47所示。39ppt課件16.6.2FlowLayout管理器FlowLayou16.6.2FlowLayout管理器圖中參數(shù)align指定一種對(duì)齊方式。其具體描述如表16.6所示。如果對(duì)窗體的大小進(jìn)行調(diào)整,組件在流布局中會(huì)根據(jù)窗體調(diào)整的大小重新調(diào)整其位置。如圖16.49所示。參數(shù)參數(shù)描述FlowLayout.LEFT靠左排列FlowLayout.CENTER置中排列FlowLayout.RIGHT靠右排列FlowLayout.LEADING對(duì)齊左邊界FlowLayout.TRAILING對(duì)齊右邊界40ppt課件16.6.2FlowLayout管理器圖中參數(shù)align16.6.3CardLayout管理器網(wǎng)格布局GridLayout管理器,可以將容器劃分為若干行與若干列的網(wǎng)格區(qū)域,并將組件放置在由行和列組成的網(wǎng)格中。采用GridLayout布局時(shí),在容器中按照從左到右、從上到下的順序往網(wǎng)格中逐個(gè)添加組件。GridLayout管理器的布局示意圖如圖16.50所示。41ppt課件16.6.3CardLayout管理器網(wǎng)格布局GridL16.6.3CardLayout管理器GridLayout類的主要構(gòu)造方法如圖16.51所示。GridLayout類提供的對(duì)網(wǎng)格布局中的行、列,以及水平和垂直間距進(jìn)行設(shè)置的方法如表16.7所示。方法名稱方法描述publicvoidsetRows(introws)設(shè)置布局中的行數(shù)publicvoidsetColumns(intcols)設(shè)置布局中的列數(shù)publicvoidsetHgap(inthgap)設(shè)置布局中組件之間的水平距離publicvoidsetVgap(intvgap)設(shè)置布局中組件之間的垂直距離42ppt課件16.6.3CardLayout管理器GridLayou16.6.4GridBagLayout管理器GridBagLayout布局管理器在GridLayout布局管理器的基礎(chǔ)上提供了更加復(fù)雜的功能。采用GridBagLayout布局時(shí),一個(gè)組件可以跨越多個(gè)行列放在多個(gè)網(wǎng)格內(nèi)。另外,可以通過(guò)設(shè)定填充方式、間距等任意調(diào)整組件的大小和位置。GridBagLayout管理器的布局示意圖如圖16.53所示。43ppt課件16.6.4GridBagLayout管理器GridBa16.6.4GridBagLayout管理器GridBagLayout類的構(gòu)造方法與GridLayout類的構(gòu)造方法基本相同,只是在GridLayout類基礎(chǔ)上又增加了一些屬性,如表16.8所示。新增屬性屬性描述intanchor指定組件在區(qū)域中放置的位置intfill指定組件填充方式intgridheight指定組件的高度,單位為網(wǎng)格個(gè)數(shù)intgridwidth指定組件的寬度,單位為網(wǎng)格個(gè)數(shù)intgridx指定組件的橫向坐標(biāo),單位為網(wǎng)格個(gè)數(shù)intgridy指定組件的縱向坐標(biāo),單位為網(wǎng)格個(gè)數(shù)Insetsinsets指定組件與區(qū)域的間隔大小44ppt課件16.6.4GridBagLayout管理器GridBa16.6.5CardLayout管理器CardLayout布局管理器用于將組件以卡片的形式進(jìn)行布局。采用CardLayout布局,每張卡片屬于不同的層次,并且充滿整個(gè)容器。它將容器中的每個(gè)組件看作一張卡片。任何情況下,一次只能看到一張卡片,即一次只有一個(gè)組件可見(jiàn)。組件的順序由組件對(duì)象本身在容器內(nèi)部的順序決定。CardLayout管理器的布局示意圖如圖16.55所示。45ppt課件16.6.5CardLayout管理器CardLayou16.6.5CardLayout管理器CardLayout類的主要構(gòu)造方法如圖16.56所示。CardLayout類提供了一些方法用來(lái)翻轉(zhuǎn)該布局中的組件。具體方法及其描述如表16.9所示。方法方法描述publicvoidfirst(Containerparent)翻轉(zhuǎn)到容器的第一張卡片publicvoidlast(Containerparent)翻轉(zhuǎn)到容器的最后一張卡片publicvoidnext(Containerparent)翻轉(zhuǎn)到指定容器的下一張卡片publicvoidprevious(Containerparent)翻轉(zhuǎn)到指定容器的前一張卡片publicvoidsetHgap(inthgap)設(shè)置組件之間,以及組件與Container的邊之間水平間隙publicvoidsetVgap(intvgap)設(shè)置組件之間,以及組件與Container的邊之間垂直間隙publicintgetHgap()獲得組件之間,以及組件與Container的邊之間的水平間隙publicintgetVgap()獲得組件之間,以及組件與Container的邊之間的垂直間隙46ppt課件16.6.5CardLayout管理器CardLayou16.6.5CardLayout管理器我們可以單擊“前一張卡片”按鈕和“后一張卡片按鈕”,發(fā)現(xiàn)實(shí)際顯示在窗體的只能是一個(gè)按鈕。且它們是按順序排列的,如圖16.58所示。47ppt課件16.6.5CardLayout管理器我們可以單擊“前一16.6.6不使用布局管理器定位組件不同的布局管理器會(huì)將組件定位在不同的位置。但是,有些時(shí)候并不想使用指定的某個(gè)布局管理器對(duì)組件進(jìn)行定位。而是想按照自己的設(shè)計(jì)對(duì)組件進(jìn)行定位,這時(shí)我們可以使用setBounds()方法來(lái)完成這一任務(wù)。setBounds()方法的語(yǔ)法格式如圖16.59所示。48ppt課件16.6.6不使用布局管理器定位組件不同的布局管理器會(huì)將16.7Swing的事件處理前面幾小節(jié)的主要內(nèi)容是討論組件的使用以及容器的布局,這些內(nèi)容使Java圖形用戶界面的程序設(shè)計(jì)變得靈活方便,與圖形界面程序密切相關(guān)的還有一個(gè)比較重要的內(nèi)容——事件處理機(jī)制。49ppt課件16.7Swing的事件處理前面幾小節(jié)的主要內(nèi)容是討論組16.7.1事件處理機(jī)制概述事件處理是圖形界面與用戶進(jìn)行交互的重要內(nèi)容。Java語(yǔ)言的事件處理機(jī)制包括事件源、事件、事件處理器三個(gè)主要的概念。首先需要為事件源注冊(cè)相應(yīng)的事件處理器,事件源產(chǎn)生指定事件后,事件處理器捕獲后進(jìn)行相應(yīng)事件處理。其大致處理機(jī)制如圖16.61所示。50ppt課件16.7.1事件處理機(jī)制概述事件處理是圖形界面與用戶進(jìn)行16.7.1事件處理機(jī)制概述以下是對(duì)三個(gè)概念的說(shuō)明:事件源:產(chǎn)生事件的各種組件,如窗口、按鈕、復(fù)選框等。事件:用戶對(duì)事件源的各種操作動(dòng)作。事件處理器:用于接收并處理事件的方法。在圖形用戶界面的程序中,用戶的不同操作,如單擊鼠標(biāo)、移動(dòng)鼠標(biāo)、鍵盤(pán)輸入等,會(huì)引發(fā)不同的事件類型,而不同的事件,需要相對(duì)應(yīng)的事件監(jiān)聽(tīng)器來(lái)監(jiān)聽(tīng)并處理事件。在本節(jié)中就來(lái)講解Java中有什么類型的事件,不同類型時(shí)間需要哪些特定類型事件監(jiān)聽(tīng)器來(lái)處理。51ppt課件16.7.1事件處理機(jī)制概述以下是對(duì)三個(gè)概念的說(shuō)明:5116.7.2事件監(jiān)聽(tīng)器實(shí)現(xiàn)事件處理,首先要實(shí)現(xiàn)監(jiān)聽(tīng)器接口,然后調(diào)用事件源對(duì)象中的方法來(lái)一個(gè)添加監(jiān)聽(tīng)器對(duì)象。當(dāng)事件發(fā)生后,事件源會(huì)調(diào)用監(jiān)聽(tīng)器接口中的方法,通過(guò)將事件對(duì)象傳遞給相應(yīng)的監(jiān)聽(tīng)器方法來(lái)實(shí)現(xiàn)對(duì)事件的處理。52ppt課件16.7.2事件監(jiān)聽(tīng)器實(shí)現(xiàn)事件處理,首先要實(shí)現(xiàn)監(jiān)聽(tīng)器接口16.7.2事件監(jiān)聽(tīng)器每種事件類都有對(duì)應(yīng)的事件監(jiān)聽(tīng)器,它是事件監(jiān)聽(tīng)器類的接口。各種事件類的接口描述如表16.10所示。事件類別描述信息接口名方法ActionEvent激活組件ActionListeneractionPerformed(ActionEvent)ItemEvent選擇了某些項(xiàng)目ItemListeneritemStateChanged(ItemEvent)MouseEvent鼠標(biāo)移動(dòng)MouseMotionListenermouseDragged(MouseEvent)mouseMoved(MouseEvent)鼠標(biāo)單擊等MouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)KeyEvent鍵盤(pán)輸入KeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)FocusEvent組件收到或失去焦點(diǎn)FocusListenerfocusGained(FocusEvent)focusLost(FocusEvent)WindowEvent窗口收到窗口級(jí)事件WindowListenerwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)53ppt課件16.7.2事件監(jiān)聽(tīng)器每種事件類都有對(duì)應(yīng)的事件監(jiān)聽(tīng)器,它16.7.3焦點(diǎn)事件焦點(diǎn)事件類(FocusEvent)是指用戶程序界面的組件焦點(diǎn)發(fā)生改變(即焦點(diǎn)從一個(gè)對(duì)象轉(zhuǎn)移到另外一個(gè)對(duì)象)時(shí),就會(huì)發(fā)生焦點(diǎn)事件。得到焦點(diǎn)事件的組件處于激活狀態(tài)。使用焦點(diǎn)事件必須給組件增加一個(gè)FocusListener接口的事件處理器,該接口包含如下兩個(gè)方法,如圖16.63所示。54ppt課件16.7.3焦點(diǎn)事件焦點(diǎn)事件類(FocusEvent)是16.7.4鍵盤(pán)事件鍵盤(pán)事件用于處理用戶在鍵盤(pán)上輸入的信息,其中回車鍵的輸入還可以通過(guò)ActionListener進(jìn)行處理。表示鍵盤(pán)事件的類是KeyEvent,這個(gè)類除了包含有產(chǎn)生鍵盤(pán)事件的事件源,還包含了用戶當(dāng)前輸入的是哪一個(gè)鍵的信息。實(shí)現(xiàn)該事件的類需要實(shí)現(xiàn)KeyListener接口,該接口中的方法如圖16.65所示。55ppt課件16.7.4鍵盤(pán)事件鍵盤(pán)事件用于處理用戶在鍵盤(pán)上輸入的信16.7.4鍵盤(pán)事件鍵盤(pán)事件類的方法及方法描述如表16.10所示。方法方法描述getKeyChar()返回在鍵盤(pán)上按下的字符。getKeyCode()返回在鍵盤(pán)上按下的字符碼。getKeyLocation()返回鍵位置。getKeyModifiersText()返回描述修飾符的文本字符串。getKeyText()返回鍵碼編程描述鍵的文本。isActionKey()判斷鍵是否是操作鍵。setKeyChar()改變鍵字符為指定的字符。setModifiers(intmodifiers)改變鍵修飾符為指定的鍵修飾符。paramString()生成事件狀態(tài)的字符串。56ppt課件16.7.4鍵盤(pán)事件鍵盤(pán)事件類的方法及方法描述如表16.16.7.5鼠標(biāo)事件鼠標(biāo)事件類(MouseEvent)指組件中發(fā)生的鼠標(biāo)動(dòng)作事件,如按下鼠標(biāo)、釋放鼠標(biāo)、單擊鼠標(biāo)、鼠標(biāo)光標(biāo)進(jìn)入或離開(kāi)組件的幾何圖形、移動(dòng)鼠標(biāo)、拖動(dòng)鼠標(biāo)。當(dāng)鼠標(biāo)移動(dòng)到某個(gè)區(qū)域或鼠標(biāo)單擊某個(gè)組件時(shí)就會(huì)觸發(fā)鼠標(biāo)事件。使用鼠標(biāo)事件必須給組件添加一個(gè)MouseListener接口的事件處理器。57ppt課件16.7.5鼠標(biāo)事件鼠標(biāo)事件類(MouseEvent)指16.7.5鼠標(biāo)事件MouseListener接口的方法如圖16.67所示。鼠標(biāo)事件類的方法及方法描述如表16.11所示。方法方法描述getButton()返回鼠標(biāo)鍵狀態(tài)改變指示getClickCount()返回鼠標(biāo)鍵單擊的次數(shù)getMouseModifiersText()返回指定修飾符文本字符串getPoint()返回事件源中位置對(duì)象getX()返回鼠標(biāo)在指定區(qū)域內(nèi)相對(duì)位置的橫坐標(biāo)getY()返回鼠標(biāo)在指定區(qū)域內(nèi)相對(duì)位置的縱坐標(biāo)58ppt課件16.7.5鼠標(biāo)事件MouseListener接口的方法16.7.6窗口事件窗口事件(WindowEvent)指窗口狀態(tài)改變的事件,如當(dāng)窗口Window對(duì)象的打開(kāi)、關(guān)閉、激活、停用,或者焦點(diǎn)轉(zhuǎn)移到窗口內(nèi),以及焦點(diǎn)移除而生成的事件。一般發(fā)生在Window、Frame、Dialog等類的對(duì)象上。使用窗口事件必須為組件添加一個(gè)實(shí)現(xiàn)WindowListener接口的事件處理器。59ppt課件16.7.6窗口事件窗口事件(WindowEvent)指16.7.6窗口事件WindowListener接口的方法如圖16.69所示。60ppt課件16.7.6窗口事件WindowListener接口的方16.7.7事件適配器Java除了提供實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方法處理事件,還提供了另外一種簡(jiǎn)單的實(shí)現(xiàn)監(jiān)聽(tīng)器的手段——事件適配器(EventAdapter)。程序員可以通過(guò)繼承事件所對(duì)應(yīng)的適配器類,重寫(xiě)感興趣的方法,不感興趣的方法可以置之不理。java.awt.event包中定義的事件適配器類包括以下幾個(gè):ComponentAdapter(組件適配器)ContainerAdapter(容器適配器)FocusAdapter(焦點(diǎn)適配器)KeyAdapter(鍵盤(pán)適配器)MouseAdapter(鼠標(biāo)適配器)MouseMotionAdapter(鼠標(biāo)運(yùn)動(dòng)適配器)WindowAdapter(窗口適配器)61ppt課件16.7.7事件適配器Java除了提供實(shí)現(xiàn)監(jiān)聽(tīng)器接口的方16.8小結(jié)本章是Java圖形界面的核心內(nèi)容,也是難度比較大的內(nèi)容。首先介紹了AWT和Swing的基本概念,然后介紹了容器類的知識(shí),接著重點(diǎn)講述了Swing中常用的基本組件和高級(jí)組件。最后為大家講解了布局管理器和事件處理的知識(shí)。本章的重點(diǎn)是容器類、常用組件以及布局管理器的理解和運(yùn)用,難點(diǎn)是對(duì)事件處理的理解。希望大家多加練習(xí)鞏固,以更好地在今后工作中熟練地使用圖形界面程序。62ppt課件16.8小結(jié)本章是Java圖形界面的核心內(nèi)容,也是難度比第16章圖形界面編程圖形用戶界面(GraphicalUserInterface)簡(jiǎn)稱GUI,提供了一種更加直觀、友好的與用戶進(jìn)行交互的方式。利用Java語(yǔ)言進(jìn)行圖形用戶界面操作主要由java.awt和javax.swing兩個(gè)包來(lái)完成。其中,AWT包是圖形用戶界面處理的基本工具包,Swing包在AWT包的基礎(chǔ)上進(jìn)行了升級(jí)、擴(kuò)展,具有更加強(qiáng)大的圖形界面開(kāi)發(fā)功能。本章在了解AWT包功能的基礎(chǔ)上,重點(diǎn)講解Swing的功能。63ppt課件第16章圖形界面編程圖形用戶界面(GraphicalU16.1AWT簡(jiǎn)介Java1.0的出現(xiàn)帶來(lái)了抽象窗口工具箱(AWT)。設(shè)計(jì)目標(biāo)是希望構(gòu)建一個(gè)通用的GUI,使得利用它編寫(xiě)的程序能夠運(yùn)行在所有的平臺(tái)上,以實(shí)現(xiàn)Sun公司提出的口號(hào)“一次編寫(xiě),隨處運(yùn)行”。JavaAWT中包含了許多類來(lái)支持GUI設(shè)計(jì)。AWT由Java的java.awt包提供,該包中有許多用來(lái)設(shè)計(jì)GUI的組件類,如按鈕、菜單、列表、文本框等組件類;同時(shí)還包含窗口、面板等容器類。AWT的具體層次結(jié)構(gòu)如圖16.1所示。64ppt課件16.1AWT簡(jiǎn)介Java1.0的出現(xiàn)帶來(lái)了抽象窗口工16.1AWT簡(jiǎn)介Java提供了一系列AWT軟件包,其中主要的包及包的描述如圖16.2所示。65ppt課件16.1AWT簡(jiǎn)介Java提供了一系列AWT軟件包,其中16.1AWT簡(jiǎn)介java.awt包提供了基本的Java程序的GUI設(shè)計(jì)工具。主要包括組件、容器和布局管理器三個(gè)概念,其具體描述如圖16.3所示。66ppt課件16.1AWT簡(jiǎn)介java.awt包提供了基本的Java16.2Swing簡(jiǎn)介Swing是Java基礎(chǔ)類庫(kù)(JavaFoundationClasses)中有關(guān)圖形界面的類庫(kù)。Swing擴(kuò)展自AWT。例如JFrame擴(kuò)展自Frame,JButton擴(kuò)展自Component等?;旧螦WT中的每種控件都能在Swing中找到替代品,比如AWT中的Button對(duì)應(yīng)于Swing中的JButton,AWT中的TextField對(duì)應(yīng)于Swing中的JTextField等。67ppt課件16.2Swing簡(jiǎn)介Swing是Java基礎(chǔ)類庫(kù)(Ja16.2Swing簡(jiǎn)介Swing包是JFC(JavaFoundationClasses)的一部分,它由許多包組成,這些包的名稱及描述如表16.1所示。包名包的描述Com.sum.swing.plaf.motif實(shí)現(xiàn)Motif界面樣式代表類Com.sum.java.swing.plaf.windows實(shí)現(xiàn)Windows界面樣式的代表類javax.swingSwing組件和使用工具javax.swing.borderSwing輕量組件的邊框javax.swing.colorchooserJcolorChooser的支持類/接口javax.swing.event事件和偵聽(tīng)器類javax.swing.filechooserJFileChooser的支持類/接口javax.swing.pending未完全實(shí)現(xiàn)的Swing組件javax.swing.plaf抽象類,定義UI代表的行為javax.swing.plaf.basic實(shí)現(xiàn)所有標(biāo)準(zhǔn)界面樣式公共基類javax.swing.plaf.metal它們實(shí)現(xiàn)Metal界面樣式代表類javax.swing.tableJtable組件javax.swing.text支持文檔的顯示和編輯javax.swing.text.html支持顯示和編輯HTML文檔javax.swing.text.html.parserHtml文檔的分析器javax.swing.text.rtf支持顯示和編輯RTF文件javax.swing.treeJtree組件的支持類javax.swing.undo支持取消操作68ppt課件16.2Swing簡(jiǎn)介Swing包是JFC(JavaF16.3容器類窗口(JFrame)、面板(JPanel)和對(duì)話框(J)是Swing中提供用來(lái)創(chuàng)建表示圖形用戶界面的類。該類的對(duì)象將被當(dāng)作容器使用,所有的Swing組件都必須被添加到容器中,才能被顯示出來(lái)。69ppt課件16.3容器類窗口(JFrame)、面板(JPanel16.3.1JFrame類JFrame是一個(gè)窗口容器組件,可以被顯示在用戶桌面上,同時(shí)也是一個(gè)框架,在其中,可以添加需要的其他的Swing組件。JFrame是少數(shù)幾個(gè)不是通過(guò)繪制的方式顯示的Swing組件。JFrame類的構(gòu)造方法如圖16.5所示。70ppt課件16.3.1JFrame類JFrame是一個(gè)窗口容器組件16.3.1JFrame類JFrame類中還提供了一些與窗口有關(guān)的方法。其主要方法與方法描述如表16.2所示。方法方法描述publicvoidsetVisible(booleanb)判斷窗體是否可見(jiàn)。如果參數(shù)b為true則表示顯示該窗體,否則表示不可見(jiàn)publicvoidsetBackground(Colorc)設(shè)置窗體背景顏色publicvoidsetTitle(Strings)設(shè)置標(biāo)題。其中參數(shù)s表示要顯示在窗體邊界中的標(biāo)題publicStringgetTitle()獲取窗體邊界的標(biāo)題。如果沒(méi)有標(biāo)題則返回空字符串publicvoidpack()調(diào)整適合其子組件的大小和布局窗口的大小publicvoidsetResizable(booleanresizable)設(shè)置窗口大小是否可以調(diào)整publicContainergetContentPane()返回此窗體的contentPane對(duì)象publicvoidsetLayout(LayoutManagermanager)設(shè)置布局管理器publicvoidvalidate()驗(yàn)證容器及其容器中的組件71ppt課件16.3.1JFrame類JFrame類中還提供了一些與16.3.2JDialog類JDialog是一個(gè)用來(lái)創(chuàng)建對(duì)話框的類,是Dialog類的子類。創(chuàng)建的JDialog對(duì)象可以用來(lái)向用戶返回信息,接收用戶的輸入,實(shí)現(xiàn)與用戶的交互。JDialog與JFrame的區(qū)別在于:JDialog對(duì)象需要依賴于其他的對(duì)話框(比如Jframe)而存在,當(dāng)它所依賴的對(duì)話框關(guān)閉或最小化的時(shí)候,該對(duì)話框也隨之關(guān)閉或最小化。72ppt課件16.3.2JDialog類JDialog是一個(gè)用來(lái)創(chuàng)建16.3.2JDialog類JDialog類創(chuàng)建對(duì)話框?qū)ο蟮臉?gòu)造方法如圖16.7所示。JDialog類中的主要方法及方法描述如表16.3所示。方法方法描述StringgetTitle()用于獲取對(duì)話框的名字voidsetTitle(Strings)用于設(shè)置對(duì)話框的名字voidsetModal(booleanb)用于設(shè)置對(duì)話框的模式setSize(intwidth,intheight)用于設(shè)置對(duì)話框的大小voidsetVisible(booleanb)用于設(shè)置對(duì)話框是否可見(jiàn)73ppt課件16.3.2JDialog類JDialog類創(chuàng)建對(duì)話框?qū)?6.3.3

JPanel類在得到了JFrame的內(nèi)容面板后我們就可以直接將其他的Swing組件放在其中,或者直接在上面描繪圖畫(huà)或文字,但是習(xí)慣上一般不會(huì)這么做。通常會(huì)將這些圖畫(huà)或文字信息描繪在名為JPanel的容器上,然后再將JPanel實(shí)例放在內(nèi)容面板上。這樣可以使得面板上的布局更合理。JPanel通常只作為純粹的容器來(lái)使用,它不能像框架、窗口或者對(duì)話框那樣獨(dú)立存在。JPanel的構(gòu)造方法如圖16.9所示。74ppt課件16.3.3JPanel類在得到了JFrame的內(nèi)容面板16.4Swing常用基本組件創(chuàng)建圖形用戶界面GUI,就是為了讓計(jì)算機(jī)程序更好的和用戶交互。JavaSwing提供了二十多種不同的用戶界面組件。所有的Swing組件都是從javax.swing.Jcomponent類中派生而來(lái)的,從而繼承了組件所特有的屬性和方法。75ppt課件16.4Swing常用基本組件創(chuàng)建圖形用戶界面GUI,就16.4.1常用組件的共性操作Swing類庫(kù)中的組件都繼承自javax.swing.JComponent,因此都具有JComponent的操作,包括設(shè)置背景色、設(shè)置前景色、設(shè)置字體以及設(shè)置是否禁用等。表16.4中是JComponent中常用的方法及方法描述。方法方法描述intgetHeight()返回組件高度intgetWidth()返回組件寬度StringgetToolTipText()返回工具提示voidsetToolTipText(Stringtext)設(shè)置工具提示DimensiongetSize(Dimensionrv)返回尺寸intgetX()返回位置xvoidsetBackground(Colorbg)設(shè)置背景色voidsetOpaque(booleanisOpaque)設(shè)置是否透明voidsetVisible(booleanaFlag)設(shè)置是否可見(jiàn)voidsetFont(Fontfont)設(shè)置字體voidsetBorder(Borderborder)設(shè)置邊框76ppt課件16.4.1常用組件的共性操作Swing類庫(kù)中的組件都繼16.4.2按鈕(JButton)按鈕是用戶界面中常用的組件。用戶使用Swing按鈕可以顯示圖像,將整個(gè)按鈕設(shè)置為窗口默認(rèn)圖標(biāo),來(lái)處理鼠標(biāo)在按鈕上的事件。java.swing包中提供了標(biāo)準(zhǔn)的按壓式按鈕(JButton)。同時(shí)提供了選擇式按鈕:多選擇(JCheckBox)、單選擇(JRadioButton)等。我們?cè)谶@里先來(lái)講解JButton的知識(shí)。JButton的構(gòu)造方法如圖16.11所示。77ppt課件16.4.2按鈕(JButton)按鈕是用戶界面中常用的16.4.3文本框(JTextField)與密碼輸入框(JPasswordField)文本框(JTextField)也是一種常見(jiàn)的組件,用于處理一行文本(中間沒(méi)有回車符)。JTextField是JTextComponent的子類。密碼輸入框是JTextField的一個(gè)子類。JTextField和JPasswordField的構(gòu)造函數(shù)形式和常用方法完全一樣。這里只列出JTextField的構(gòu)造函數(shù),如圖16.13所示。78ppt課件16.4.3文本框(JTextField)與密碼輸入框(16.4.4文本域(JTextArea)文本域(JTextArea)也是一種常用組件,用于處理多行文本。JTextArea同JTextField一樣,都是JTextComponent的子類,因此它們的很多操作都類似,我們不再贅述。JTextArea的構(gòu)造函數(shù)如圖16.15所示。79ppt課件16.4.4文本域(JTextArea)文本域(JTex16.4.5標(biāo)簽(JLabel)標(biāo)簽(JLabel)用來(lái)顯示一段文本,常用在JTextField或者JTextArea前面,提示用戶要填寫(xiě)什么樣的信息。JLabel用于顯示文字,也可以同時(shí)顯示文字和圖標(biāo),一般不用于接收鼠標(biāo)鍵盤(pán)的動(dòng)作。JLabel的構(gòu)造方法如圖16.17所示。80ppt課件16.4.5標(biāo)簽(JLabel)標(biāo)簽(JLabel)用來(lái)16.4.6單選按鈕(JRadioButton)JRadioButton用來(lái)實(shí)現(xiàn)單選按鈕組件,按鈕有選中和沒(méi)被選中兩種狀態(tài)。多個(gè)單選按鈕中,一次只能有一個(gè)按鈕處于被選中狀態(tài)。JRadioButton的構(gòu)造方法如圖16.19所示。81ppt課件16.4.6單選按鈕(JRadioButton)JRad16.4.7復(fù)選框(JCheckBox)JCheckBox是用來(lái)實(shí)現(xiàn)JCheckBox的組件。復(fù)選框是一個(gè)可以被選定和取消選定的項(xiàng),它將其狀態(tài)顯示給用戶。一次可以選中多個(gè)復(fù)選框。JCheckBox類的構(gòu)造方法如圖16.21所示。82ppt課件16.4.7復(fù)選框(JCheckBox)JCheckBo16.4.8下拉列表(JComboBox)下拉列表(JComboBox)是一種常見(jiàn)的組件。用戶可以從下列的菜單列表中選擇所需要的數(shù)據(jù)。一個(gè)下拉列表只能選擇一個(gè)選項(xiàng)。JComboBox的構(gòu)造方法如圖16.23所示。可以將需要在下拉列表中顯示的各項(xiàng)放入一個(gè)數(shù)組中,然后利用其相應(yīng)的構(gòu)造方法將數(shù)組元素的各項(xiàng)顯示出來(lái)。83ppt課件16.4.8下拉列表(JComboBox)下拉列表(JC16.4.9列表(JList)JList是用來(lái)表示列表的組件。該組件與下拉列表不同,它可以顯示多個(gè)項(xiàng)目的內(nèi)容,并且允許用戶從列表中選擇一個(gè)或多個(gè)對(duì)象。JList的主要構(gòu)造方法如圖16.25所示。與下拉列表相同,可以將需要顯示的內(nèi)容先放入一個(gè)數(shù)組中,然后使用帶有Object類型數(shù)組為參數(shù)的的構(gòu)造方法創(chuàng)建一個(gè)JList對(duì)象,將列表中各項(xiàng)顯示出來(lái)。84ppt課件16.4.9列表(JList)JList是用來(lái)表示列表的16.4.10滾動(dòng)條(JScrollPane)JscrollPane類的對(duì)象可以創(chuàng)建一個(gè)垂直或者水平方向的滾動(dòng)條。在實(shí)際使用中,它需要和某個(gè)容器相關(guān)聯(lián)。例如,表格、窗體等。JScrollPane類的構(gòu)造方法如圖16.27所示。85ppt課件16.4.10滾動(dòng)條(JScrollPane)Jscro16.5Swing高級(jí)組件16.4小節(jié)中我們介紹了Swing基本組件,但在實(shí)際應(yīng)用中,對(duì)于一些比較復(fù)雜的界面,除了使用這些基本組件之外,還需要使用諸如表格、菜單、工具欄等這些組件。本節(jié)我們就來(lái)介紹Swing中的一些高級(jí)組件的創(chuàng)建和使用,包括表格、樹(shù)、菜單,以及對(duì)話框等組件。86ppt課件16.5Swing高級(jí)組件16.4小節(jié)中我們介紹了Swi16.5.1表格(JTable)表格(JTable)是Swing新增加的組件,主要是為了將數(shù)據(jù)以表格的形式顯示。JTable是一個(gè)用來(lái)顯示和編輯二維單元表格的組件??梢酝ㄟ^(guò)創(chuàng)建一個(gè)二維數(shù)組對(duì)象,并將二維數(shù)組中定義并初始化的值放入到表中。Jtable創(chuàng)建表格的主要構(gòu)造方法如圖16.29所示。87ppt課件16.5.1表格(JTable)表格(JTable)是S16.5.2樹(shù)(JTree)樹(shù)是非常重要也是常用的一種數(shù)據(jù)結(jié)構(gòu)。在計(jì)算機(jī)中也有著廣泛的應(yīng)用,計(jì)算機(jī)中的目錄和文件的存儲(chǔ)結(jié)構(gòu)都是樹(shù)形的。在Swing中,可以使用JTree來(lái)構(gòu)建一個(gè)樹(shù)形結(jié)構(gòu)模型。首先我們可以先舉一個(gè)樹(shù)形結(jié)構(gòu)的例子,例如在“我的電腦”的C盤(pán)下的目錄結(jié)構(gòu),如圖16.31所示。88ppt課件16.5.2樹(shù)(JTree)樹(shù)是非常重要也是常用的一種數(shù)16.5.2樹(shù)(JTree)在這個(gè)圖中我們要注意以下幾點(diǎn):一顆樹(shù)中只有一個(gè)根結(jié)點(diǎn)。其余結(jié)點(diǎn)都是從該結(jié)點(diǎn)引出。除根結(jié)點(diǎn)外。其余結(jié)點(diǎn)要么是沒(méi)有子結(jié)點(diǎn)的結(jié)點(diǎn)要么是帶有子結(jié)點(diǎn)的結(jié)點(diǎn)。沒(méi)有子結(jié)點(diǎn)的結(jié)點(diǎn)稱為葉子結(jié)點(diǎn)。在圖16.31的樹(shù)結(jié)構(gòu)中,“計(jì)算機(jī)”是根結(jié)點(diǎn),“Intel”文件是一個(gè)葉子結(jié)點(diǎn),“NVIDIA”文件是一個(gè)帶有子結(jié)點(diǎn)的結(jié)點(diǎn)。然后我們看JTree的主要的構(gòu)造方法,如圖16.32所示。89ppt課件16.5.2樹(shù)(JTree)在這個(gè)圖中我們要注意以下幾點(diǎn)16.5.3菜單(JMenu)菜單(JMenu)是標(biāo)題欄下面的一行文字部分。菜單是應(yīng)用程序中最常用的組件。菜單的組織方式為:一個(gè)菜單條JMenuBar包含多個(gè)菜單項(xiàng)(JMenuItem)。JMenuItem有兩個(gè)子類,分別為JRadioButtonMenuItem及JCheckBoxMenuItem用于表示單選菜單項(xiàng)和復(fù)選菜單項(xiàng)。90ppt課件16.5.3菜單(JMenu)菜單(JMenu)是標(biāo)題欄16.5.3菜單(JMenu)JMenu組件類的主要構(gòu)造方法如圖16.34所示。創(chuàng)建菜單項(xiàng)的JMenuItem的主要構(gòu)造方法如圖16.35所示。91ppt課件16.5.3菜單(JMenu)JMenu組件類的主要構(gòu)造16.5.4工具欄(JToolBar)工具欄(JToolBar)提供了一種可以快速訪問(wèn)界面中常用命令的方式。通常工具欄應(yīng)該放到邊界布局中的一邊??梢运胶痛怪狈胖?,也可以拖動(dòng)工具欄將其放置在想要放置的位置。工具欄一般放到菜單欄的下面,可以把菜單欄中的常用命令放到工具欄中,以方便用戶操作。92ppt課件16.5.4工具欄(JToolBar)工具欄(JTool16.5.4工具欄(JToolBar)Java中可以通過(guò)創(chuàng)建JToolBar對(duì)象來(lái)實(shí)現(xiàn)工具欄。JToolBar的主要構(gòu)造方法如圖16.37所示。orientation參數(shù)可以是以下兩個(gè)值中的任何一個(gè)。SwingConstants.HORIZONTAL表示工具欄以水平方向放置。SwingConstants.VERTICAL表示工具欄以垂直方向放置。93ppt課件16.5.4工具欄(JToolBar)Java中可以通過(guò)16.5.5進(jìn)程條(JprogressBar)進(jìn)程條(JprogressBar)是以圖形化的方式來(lái)描述任務(wù)進(jìn)度的組件。在任務(wù)完成過(guò)程中,進(jìn)度條顯示該任務(wù)完成的百分比,百分比通常用可視化的矩形表示,該矩形開(kāi)始為空,隨著任務(wù)的執(zhí)行,組件被填滿。JprogressBar的主要構(gòu)造方法如圖16.39所示。94ppt課件16.5.5進(jìn)程條(JprogressBar)進(jìn)程條(J16.5.6對(duì)話框(JDialog)對(duì)話框是一種大小不能變化、不能有菜單的容器窗口,對(duì)話框不能作為一個(gè)應(yīng)用程序的主框架,而必須包含在其他的容器中。Java語(yǔ)言提供多種對(duì)話框類來(lái)支持多種形式的對(duì)話框。我們這里只為大家介紹一下簡(jiǎn)單的標(biāo)準(zhǔn)對(duì)話框——JOptionPane。95ppt課件16.5.6對(duì)話框(JDialog)對(duì)話框是一種大小不能16.5.6對(duì)話框(JDialog)JOptionPane提供的對(duì)話框是模式對(duì)話框。使用JOptionPane,可以創(chuàng)建和自定義問(wèn)多種類型的對(duì)話框。JOptionPane類的構(gòu)造方法如圖16.41所示。96ppt課件16.5.6對(duì)話框(JDialog)JOptionPan16.6布局管理器在Java語(yǔ)言中,把創(chuàng)建的組件放置到對(duì)話框中,需要設(shè)置對(duì)話框界面的格式,這時(shí)候就必須使用布局管理器(layoutmanager),來(lái)排列界面上的組件。當(dāng)組件被加入到容器中時(shí),將如何排列,都由布局管理器來(lái)進(jìn)行管理。Java中的布局管理器包括:FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout。當(dāng)創(chuàng)建好需要的布局管理器后,就可以調(diào)用容器的setLayout()方法,來(lái)設(shè)定該容器的布局方式。下面我們?yōu)榇蠹揖唧w介紹幾種主要的布局管理器。97ppt課件16.6布局管理器在Java語(yǔ)言中,把創(chuàng)建的組件放置到對(duì)16.6.1BorderLayout管理器BorderLayout布局管理器將容器劃分為東(East)、西(West)、南(South)、北(North)、中(Center)五個(gè)區(qū)域。它是Frame類的默認(rèn)布局管理器。采用BorderLayout布局時(shí),向容器中添加組件需要指定組件所在的區(qū)域。其大致所分區(qū)域如圖16.43所示。98ppt課件16.6.1BorderLayout管理器BorderL16.6.1BorderLayout管理器BorderLayout類的主要構(gòu)造方法如圖16.44所示。圖中參數(shù)align指定了布局的位置,如表16.5所示。參數(shù)參數(shù)描述BorderLayout.CENTER中間BorderLayout.EAST東邊BorderLayout.WEST西邊BorderLayout.SOUTH南邊BorderLayout.NORTH北邊99ppt課件16.6.1BorderLayout管理器BorderL16.6.2FlowLayout管理器流動(dòng)布局是使用FlowLayout類來(lái)創(chuàng)建的。該布局方式是最簡(jiǎn)單的一種布局管理器,其排列組件的方式是按照:從左到右排列,當(dāng)組件排列到容器行尾時(shí),會(huì)自動(dòng)換行并繼續(xù)排列剩下的組件。它是Panel類的默認(rèn)布局管理器。我們可以調(diào)用相關(guān)方法設(shè)置不同的組件間距、行距以及對(duì)齊方式。FlowLayout管理器的布局示意圖如圖16.46所示。100ppt課件16.6.2FlowLayout管理器流動(dòng)布局是使用Fl16.6.2FlowLayout管理器FlowLayout類的主要構(gòu)造方法如圖16.47所示。101ppt課件16.6.2FlowLayout管理器FlowLayou16.6.2FlowLayout管理器圖中參數(shù)align指定一種對(duì)齊方式。其具體描述如表16.6所示。如果對(duì)窗體的大小進(jìn)行調(diào)整,組件在流布局中會(huì)根據(jù)窗體調(diào)整的大小重新調(diào)整其位置。如圖16.49所示。參數(shù)參數(shù)描述FlowLayout.LEFT靠左排列FlowLayout.CENTER置中排列FlowLayout.RIGHT靠右排列FlowLayout.LEADING對(duì)齊左邊界FlowLayout.TRAILING對(duì)齊右邊界102ppt課件16.6.2FlowLayout管理器圖中參數(shù)align16.6.3CardLayout管理器網(wǎng)格布局GridLayout管理器,可以將容器劃分為若干行與若干列的網(wǎng)格區(qū)域,并將組件放置在由行和列組成的網(wǎng)格中。采用GridLayout布局時(shí),在容器中按照從左到右、從上到下的順序往網(wǎng)格中逐個(gè)添加組件。GridLayout管理器的布局示意圖如圖16.50所示。103ppt課件16.6.3CardLayout管理器網(wǎng)格布局GridL16.6.3CardLayout管理器GridLayout類的主要構(gòu)造方法如圖16.51所示。GridLayout類提供的對(duì)網(wǎng)格布局中的行、列,以及水平和垂直間距進(jìn)行設(shè)置的方法如表16.7所示。方法名稱方法描述publicvoidsetRows(introws)設(shè)置布局中的行數(shù)publicvoidsetColumns(intcols)設(shè)置布局中的列數(shù)publicvoidsetHgap(inthgap)設(shè)置布局中組件之間的水平距離publicvoidsetVgap(intvgap)設(shè)置布局中組件之間的垂直距離104ppt課件16.6.3CardLayout管理器GridLayou16.6.4GridBagLayout管理器GridBagLayout布局管理器在GridLayout布局管理器的基礎(chǔ)上提供了更加復(fù)雜的功能。采用GridBagLayout布局時(shí),一個(gè)組件可以跨越多個(gè)行列放在多個(gè)網(wǎng)格內(nèi)。另外,可以通過(guò)設(shè)定填充方式、間距等任意調(diào)整組件的大小和位置。GridBagLayout管理器的布局示意圖如圖16.53所示。105ppt課件16.6.4GridBagLayout管理器GridBa16.6.4GridBagLayout管理器GridBagLayout類的構(gòu)造方法與GridLayout類的構(gòu)造方法基本相同,只是在GridLayout類基礎(chǔ)上又增加了一些屬性,如表16.8所示。新增屬性屬性描述intanchor指定組件在區(qū)域中放置的位置intfill指定組件填充方式intgridheight指定組件的高度,單位為網(wǎng)格個(gè)數(shù)intgridwidth指定組件的寬度,單位為網(wǎng)格個(gè)數(shù)intgridx指定組件的橫向坐標(biāo),單位為網(wǎng)格個(gè)數(shù)intgridy指定組件的縱向坐標(biāo),單位為網(wǎng)格個(gè)數(shù)Insetsinsets指定組件與區(qū)域的間隔大小106ppt課件16.6.4GridBagLayout管理器GridBa16.6.5CardLayout管理器CardLayout布局管理器用于將組件以卡片的形式進(jìn)行布局。采用CardLayout布局,每張卡片屬于不同的層次,并且充滿整個(gè)容器。它將容器中的每個(gè)組件看作一張卡片。任何情況下,一次只能看到一張卡片,即一次只有一個(gè)組件可見(jiàn)。組件的順序由組件對(duì)象本身在容器內(nèi)部的順序決定。CardLayout管理器的布局示意圖如圖16.55所示。107ppt課件16.6.5CardLayout管理器CardLayou16.6.5CardLayout管理器CardLayout類的主要構(gòu)造方法如圖16.56所示。CardLayout類提供了一些方法用來(lái)翻轉(zhuǎn)該布局中的組件。具體方法及其描述如表16.9所示。方法方法描述publicvoidfirst(Containerparent)翻轉(zhuǎn)到容器的第一張卡片publicvoidlast(Containerparent)翻轉(zhuǎn)到容器的最后一張卡片pub

溫馨提示

  • 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)論