第5講 圖形用戶界面設(shè)計(jì)
《第5講 圖形用戶界面設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第5講 圖形用戶界面設(shè)計(jì)(114頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1第第5講講 圖形用戶界面設(shè)計(jì)圖形用戶界面設(shè)計(jì)主要內(nèi)容主要內(nèi)容p AWT和和Swingp容器容器p布局布局pSwing組件組件pJava圖形設(shè)計(jì)圖形設(shè)計(jì)p事件處理事件處理2AWT和和Swing組件組件AWT:AbstractWindowToolkit(抽象窗口工具集)抽象窗口工具集)圖形界面是平臺(tái)相關(guān)的;圖形界面是平臺(tái)相關(guān)的;AWT是重量級(jí)的,依賴是重量級(jí)的,依賴本地代碼實(shí)現(xiàn)。不同平臺(tái)外觀有差異,不同平臺(tái)運(yùn)本地代碼實(shí)現(xiàn)。不同平臺(tái)外觀有差異,不同平臺(tái)運(yùn)行行AWT程序可能有不同的程序可能有不同的bug,有違,有違java“一次編寫(xiě),一次編寫(xiě),到處運(yùn)行到處運(yùn)行”口號(hào)。口號(hào)。Swing:輕量級(jí)純:輕量
2、級(jí)純JAVA的圖形庫(kù)。基于的圖形庫(kù)?;贏WT,更豐,更豐富,功能更強(qiáng)大。不同平臺(tái)外觀一致。富,功能更強(qiáng)大。不同平臺(tái)外觀一致。在在AWT組件組件的類(lèi)名前加的類(lèi)名前加“J”?!爸亓考?jí)重量級(jí)”組件與組件與“輕量級(jí)輕量級(jí)”組件一同使用時(shí),如組件一同使用時(shí),如果組件區(qū)域有重疊,則果組件區(qū)域有重疊,則“重量級(jí)重量級(jí)”組件總是顯示組件總是顯示在上面在上面3常用的圖形組件常用的圖形組件AWT:java.awt.*Lable、Button、List、TextField.Frame、Panel、ContainerSwing:javax.swing.*JLable、JButton、JList、JTextField
3、.JFrame、JPanel不要在容器中混合使用不要在容器中混合使用AWT和和Swing組件組件4容器容器JavaJava的圖形用戶界面由的圖形用戶界面由組件組件構(gòu)成,例如按鈕構(gòu)成,例如按鈕(buttonbutton)、文本輸入框()、文本輸入框(textfieldtextfield)、)、標(biāo)簽(標(biāo)簽(labellabel)等都是組件,其中有一類(lèi)特)等都是組件,其中有一類(lèi)特殊的組件稱為殊的組件稱為容器容器(containercontainer),例如框),例如框架(架(frameframe)、面板()、面板(panelpanel)等。)等。容器容器是組件的容器,各種組件(包括容器)是組件的容器
4、,各種組件(包括容器)可以通過(guò)可以通過(guò)add()add()方法添加到容器中方法添加到容器中 5頂層容器頂層容器頂層(頂層(Toplevel)容器)容器所有組件都必須包含在某個(gè)容器中,而有些容器所有組件都必須包含在某個(gè)容器中,而有些容器是可以嵌套的,在這個(gè)嵌套層次的最外層,必須是可以嵌套的,在這個(gè)嵌套層次的最外層,必須是一個(gè)頂層(是一個(gè)頂層(Toplevel)容器)容器四種頂層容器四種頂層容器(Swing組件中的重量級(jí)組件)組件中的重量級(jí)組件)JFrame、JApplet、JDialog和和JwindowJFrame是一個(gè)帶有標(biāo)題行和控制按鈕(最小化、是一個(gè)帶有標(biāo)題行和控制按鈕(最小化、恢復(fù)恢復(fù)
5、/最大化、關(guān)閉)的獨(dú)立窗口,最大化、關(guān)閉)的獨(dú)立窗口,創(chuàng)建應(yīng)用程創(chuàng)建應(yīng)用程序時(shí)需要使用序時(shí)需要使用JFrame。創(chuàng)建小應(yīng)用程序時(shí)使用創(chuàng)建小應(yīng)用程序時(shí)使用JApplet,它被包含在瀏覽器窗口中。,它被包含在瀏覽器窗口中。創(chuàng)建對(duì)話創(chuàng)建對(duì)話框時(shí)使用框時(shí)使用JDialog。JWindow是一個(gè)不帶有標(biāo)題是一個(gè)不帶有標(biāo)題行和控制按鈕的窗口,因此通常很少使用行和控制按鈕的窗口,因此通常很少使用6例例1:應(yīng)用:應(yīng)用JFrame類(lèi)建立一個(gè)窗體類(lèi)建立一個(gè)窗體importjava.awt.*;importjavax.swing.*;publicclassJFrameDemopublicstaticvoidmain
6、(Strings)JFrameframe=newJFrame(JFrameDemo);/創(chuàng)建一個(gè)創(chuàng)建一個(gè)JFrame的實(shí)例的實(shí)例JButtonbutton=newJButton(Pressme);/創(chuàng)建一個(gè)創(chuàng)建一個(gè)JButton的實(shí)例的實(shí)例frame.getContentPane().add(button,BorderLayout.CENTER);/將將JButton放到放到JFrame的中央的中央frame.pack();/將將JFrame設(shè)置到適當(dāng)?shù)拇笮≡O(shè)置到適當(dāng)?shù)拇笮rame.setVisible(true);/顯示顯示JFrame7將組件放入內(nèi)容窗格將組件放入內(nèi)容窗格頂層容器都有一個(gè)
7、頂層容器都有一個(gè)內(nèi)容窗格(內(nèi)容窗格(ContentPane)頂層容器中除菜單之外的組件都是放在這個(gè)內(nèi)容窗格頂層容器中除菜單之外的組件都是放在這個(gè)內(nèi)容窗格中中方法一:通過(guò)頂層容器的方法一:通過(guò)頂層容器的getContentPane()方法獲得其方法獲得其缺省的內(nèi)容窗格,然后將組件添加到內(nèi)容窗格中。例缺省的內(nèi)容窗格,然后將組件添加到內(nèi)容窗格中。例如:如:ContainercontentPane=frame.getContentPane();contentPane.add(button,BorderLayout.CENTER);或或frame.getContentPane().add(button,
8、BorderLayout.CENTER);8將組件放入內(nèi)容窗格將組件放入內(nèi)容窗格方法二:方法二:創(chuàng)建一個(gè)新的內(nèi)容窗格取代頂層容器缺省創(chuàng)建一個(gè)新的內(nèi)容窗格取代頂層容器缺省的內(nèi)容窗格。通常是創(chuàng)建一個(gè)的內(nèi)容窗格。通常是創(chuàng)建一個(gè)JPanel的實(shí)例,然的實(shí)例,然后將組件添加到后將組件添加到JPanel實(shí)例中,再通過(guò)頂層容器實(shí)例中,再通過(guò)頂層容器的的setContentPane()方法將方法將JPanel實(shí)例設(shè)置為新的實(shí)例設(shè)置為新的內(nèi)容窗格,例如:內(nèi)容窗格,例如:JPanelcontentPane=newJPanel();contentPane.setLayout(newBorderLayout();co
9、ntentPane.add(button,BorderLayout.CENTER);frame.setContentPane(contentPane);思考:使用方法二實(shí)現(xiàn)例思考:使用方法二實(shí)現(xiàn)例1功能功能9面板面板(JPanel)面板(面板(JPanel)是一種用途廣泛的容器)是一種用途廣泛的容器與頂層容器不同的是,面板不能獨(dú)立存在,必須被與頂層容器不同的是,面板不能獨(dú)立存在,必須被添加到其他容器內(nèi)部添加到其他容器內(nèi)部面板可以嵌套,由此可以設(shè)計(jì)出復(fù)雜的圖形用戶界面板可以嵌套,由此可以設(shè)計(jì)出復(fù)雜的圖形用戶界面面JPanelpanel=newJPanel();panel.setBackgroun
10、d(Color.yellow);panel.add(button);10布局管理器布局管理器布局管理器控制組件在容器中的大小、形狀布局管理器控制組件在容器中的大小、形狀和位置。和位置。每每一一個(gè)個(gè)容容器器都都有有一一個(gè)個(gè)默默認(rèn)認(rèn)的的布布局局管管理理器器,也也可可以以通通過(guò)過(guò)setLayout()方法方法來(lái)設(shè)置其他布局管理器。來(lái)設(shè)置其他布局管理器。布布 局局 管管 理理 器器:FlowLayout、BorderLayout、GridLayout、CardLayout、null.11FlowLayout布局管理器布局管理器1、FlowLayout流式布局流式布局FlowLayout布布局局管管理理
11、是是一一種種最最簡(jiǎn)簡(jiǎn)單單的的布布局管理方法,是局管理方法,是JPanel的默認(rèn)布局的默認(rèn)布局它它將將組組件件按按每每行行先先后后自自左左向向右右放放置置,一一行行放不下時(shí)再換行放不下時(shí)再換行FlowLayout的默認(rèn)對(duì)齊方式為的默認(rèn)對(duì)齊方式為居中對(duì)齊居中對(duì)齊12FlowLayout布局管理器布局管理器構(gòu)造函數(shù):構(gòu)造函數(shù):FlowLayout():():創(chuàng)建默認(rèn)的創(chuàng)建默認(rèn)的FlowLayout布局管理器。布局管理器。FlowLayout(intalign):以指定的對(duì)齊方式創(chuàng)建:以指定的對(duì)齊方式創(chuàng)建FlowLayout布局管理器。布局管理器。其中的參數(shù)有:其中的參數(shù)有:FlowLayout.LE
12、FT(左對(duì)齊左對(duì)齊)、FlowLayout.RIGHT(右對(duì)齊)、(右對(duì)齊)、FlowLayout.CENTER(居中對(duì)齊)。(居中對(duì)齊)。FlowLayout(intalign,inthgap,intvgap):以指定的對(duì):以指定的對(duì)齊方式及間距創(chuàng)建齊方式及間距創(chuàng)建FlowLayout布局管理器。其中第一個(gè)布局管理器。其中第一個(gè)參數(shù)為參數(shù)為對(duì)齊方式對(duì)齊方式,第二個(gè)參數(shù)為,第二個(gè)參數(shù)為組件行間距組件行間距,第三個(gè)參,第三個(gè)參數(shù)為數(shù)為列間距列間距。13FlowLayout布局管理器布局管理器示例:示例:setLayout(newFlowLayout(FlowLayout.RIGHT,20,40)
13、;setLayout(newFlowLayout(FlowLayout.LEFT);setLayout(newFlowLayout();14FlowLayout布局管理器布局管理器【例例2】編寫(xiě)關(guān)于編寫(xiě)關(guān)于FlowLayout布局的窗框程序,在布局的窗框程序,在窗框中放置多個(gè)個(gè)按鈕、標(biāo)簽和文本框。窗框中放置多個(gè)個(gè)按鈕、標(biāo)簽和文本框。程序代碼:程序代碼:Example2.java15BorderLayout布局管理器布局管理器2、BorderLayout邊界布局管理器邊界布局管理器BorderLayout是是頂層容器中內(nèi)容窗格頂層容器中內(nèi)容窗格的默認(rèn)布局的默認(rèn)布局它它將將整整個(gè)個(gè)容容器器的的區(qū)區(qū)
14、域域分分為為東東、西西、南南、北北、中中五五個(gè)部分。加入組件時(shí),需指明放置的位置個(gè)部分。加入組件時(shí),需指明放置的位置。在在BorderLayout布局管理器的管理下,組件必須布局管理器的管理下,組件必須通過(guò)通過(guò)add()方法方法加入到容器的五個(gè)命名區(qū)域之一。加入到容器的五個(gè)命名區(qū)域之一。在容器的每個(gè)區(qū)域,只能加入一個(gè)組件。在容器的每個(gè)區(qū)域,只能加入一個(gè)組件。16BorderLayout布局管理器布局管理器構(gòu)造函數(shù)構(gòu)造函數(shù)BorderLayout():創(chuàng)建默認(rèn)的():創(chuàng)建默認(rèn)的BorderLayout。BorderLayout(int,int):以以指指定定的的行行間間距距和和列列間間距距創(chuàng)創(chuàng)建
15、建BorderLayout。在在BorderLayout布局的容器中放置組件,可調(diào)用布局的容器中放置組件,可調(diào)用add()方法,例如:方法,例如:容器對(duì)象容器對(duì)象.add(組件組件,BorderLayout.SOUTH);17BorderLayout布局管理器布局管理器【例例3】編寫(xiě)關(guān)于編寫(xiě)關(guān)于BorderLayout邊框布局的窗框程邊框布局的窗框程序,在窗框中放置序,在窗框中放置6個(gè)按鈕,其中南邊放置個(gè)按鈕,其中南邊放置2個(gè)按鈕。個(gè)按鈕。程序代碼:程序代碼:BorderLayoutDemo.java18GridLayout布局管理器布局管理器3、GridLayout網(wǎng)格布局網(wǎng)格布局GridL
16、ayout是是一一種種網(wǎng)網(wǎng)格格式式的的布布局局管管理理器器,將將容容器器區(qū)區(qū)域域劃劃分分成成m行行*n列列的的大大小小相相等等的的格格子子,而而容容器器中中的的組組件件就就放放入這些格子中,占用大小完全相同的一格。入這些格子中,占用大小完全相同的一格。構(gòu)造函數(shù):構(gòu)造函數(shù):GridLayout():創(chuàng)創(chuàng)建建默默認(rèn)認(rèn)的的GridLayout布布局局,所所有有組件在一行中顯示。組件在一行中顯示。GridLayout(introws,intcols):按按指指定定行行數(shù)數(shù)和和列列數(shù)數(shù)創(chuàng)建創(chuàng)建GridLayout布局。布局。GridLayout(introws,intcols,inthgap,intvg
17、ap):按按指指定定行行數(shù)數(shù)、列列數(shù)數(shù)、行行間間距距和和列列間間距距創(chuàng)創(chuàng)建建GridLayout布布局。局。19GridLayout布局管理器布局管理器【例例4】編寫(xiě)一個(gè)編寫(xiě)一個(gè)4行行2列的列的GridLayout網(wǎng)格布局程網(wǎng)格布局程序,可以用來(lái)保存學(xué)生的基本信息。序,可以用來(lái)保存學(xué)生的基本信息。程序代碼:程序代碼:GridLayDemo.java20CardLayout布局管理器布局管理器4、CardLayout卡片布局卡片布局一一種種卡卡片片式式的的布布局局管管理理器器,將將容容器器中中的的組組件件(通通常常是是面面板板)像像撲撲克克牌牌一一樣樣排排列列,里里面面放放置置多多張張疊疊放放在
18、在一一起起的的卡卡片片(組組件件),每每次次只只能能顯顯示示最最上上面面的的一一張張。執(zhí)行卡片布局執(zhí)行卡片布局next等方法翻看卡片。等方法翻看卡片。構(gòu)造函數(shù)構(gòu)造函數(shù)CardLayout():創(chuàng)創(chuàng)建建默默認(rèn)認(rèn)的的CardLayout布布局局管理器。管理器。CardLayout(introws,intcols):以以指指定定的的行行間距和列間距創(chuàng)建間距和列間距創(chuàng)建CardLayout布局管理器。布局管理器。21CardLayout布局管理器布局管理器主要方法:主要方法:voidfirst()顯顯示示第第一一個(gè)個(gè)加加入入到到CardLayout的的組組件件voidlast()顯顯示示最最后后一一個(gè)
19、個(gè)加加入入到到CardLayout的的組組件件voidnext()顯顯示示當(dāng)當(dāng)前前組組件件的的下下一一個(gè)個(gè)組組件件,如如當(dāng)當(dāng)前前是最后一個(gè),則下一個(gè)為第一個(gè)是最后一個(gè),則下一個(gè)為第一個(gè)voidprevious()顯顯示示當(dāng)當(dāng)前前組組件件的的前前一一個(gè)個(gè)組組件件,如如當(dāng)前是第一個(gè),則前一個(gè)為最后一個(gè)當(dāng)前是第一個(gè),則前一個(gè)為最后一個(gè)容容器器對(duì)對(duì)象象.add(卡卡片片組組件件,“卡卡片片1”);第第二二個(gè)個(gè)參參數(shù)數(shù)用來(lái)標(biāo)識(shí)卡片,沒(méi)有該參數(shù),將引發(fā)異常。用來(lái)標(biāo)識(shí)卡片,沒(méi)有該參數(shù),將引發(fā)異常。22CardLayout布局管理器布局管理器與幻燈片播放與幻燈片播放【例例5】編寫(xiě)編寫(xiě)CardLayout布局程
20、序,在窗框中部放布局程序,在窗框中部放置一個(gè)卡片布局面板(卡片盒),內(nèi)放置一個(gè)卡片布局面板(卡片盒),內(nèi)放3張卡片面張卡片面板,每張卡片設(shè)背景色,并放一個(gè)標(biāo)簽。窗框下部板,每張卡片設(shè)背景色,并放一個(gè)標(biāo)簽。窗框下部安放一個(gè)面板,上面放安放一個(gè)面板,上面放4個(gè)按鈕:個(gè)按鈕:“上翻上翻”、“下下翻翻”、“自動(dòng)播放自動(dòng)播放”和和“暫停暫停”。程序代碼:程序代碼:Example4.java23不使用布局管理器不使用布局管理器5、null布局管理器布局管理器null布布局局管管理理器器將將主主動(dòng)動(dòng)權(quán)權(quán)交交給給用用戶戶,由由用用戶戶使使用用坐坐標(biāo)標(biāo)系系統(tǒng)統(tǒng)來(lái)來(lái)放放置置每每個(gè)個(gè)組組件件,即即調(diào)調(diào)用用組組件件的
21、的setBounds()方方法法來(lái)來(lái)設(shè)設(shè)置其放置位置和大小。置其放置位置和大小。1調(diào)用容器的調(diào)用容器的setLayout(null)將布局管理器將布局管理器設(shè)置為空設(shè)置為空 2調(diào)用組件的調(diào)用組件的setBounds()方法設(shè)置組方法設(shè)置組件的位置和大件的位置和大小小 24null布局管理器布局管理器setBounds()方法的格式方法的格式:setBounds(int x,int y,int width,int height)前兩個(gè)前兩個(gè)int型參數(shù)設(shè)置組件的位置,后兩個(gè)型參數(shù)設(shè)置組件的位置,后兩個(gè)int型參數(shù)設(shè)置組件的寬度和高度型參數(shù)設(shè)置組件的寬度和高度25null布局管理器布局管理器【例例
22、6】編寫(xiě)手工布局程序,把窗框布局設(shè)為空,編寫(xiě)手工布局程序,把窗框布局設(shè)為空,然后在上面放置標(biāo)簽、文本框和按鈕。然后在上面放置標(biāo)簽、文本框和按鈕。程序代碼:程序代碼:Example5.java26練習(xí)練習(xí)1.使用使用null布局管理器編寫(xiě)程序?qū)崿F(xiàn)界面顯示效果布局管理器編寫(xiě)程序?qū)崿F(xiàn)界面顯示效果如圖如圖a所示。所示。2.編寫(xiě)程序?qū)崿F(xiàn)圖編寫(xiě)程序?qū)崿F(xiàn)圖b所示顯示效果,界面中添加所示顯示效果,界面中添加6個(gè)個(gè)按鈕組件。按鈕組件。圖圖a圖圖b27練習(xí)練習(xí)參考程序:參考程序:GridLayoutDemo.javaLogon.java28第第5 5講講 圖形用戶界面設(shè)計(jì)圖形用戶界面設(shè)計(jì)主要內(nèi)容主要內(nèi)容pAWT和
23、和Swingp容器容器p布局布局pSwing組件組件pJava圖形設(shè)計(jì)圖形設(shè)計(jì)p事件處理事件處理29Swing組件組件按鈕按鈕經(jīng)常用到的按鈕經(jīng)常用到的按鈕JButton、JToggleButton、JCheckBox、JRadioButton均是均是AbstractButton的子類(lèi)或間接子類(lèi)的子類(lèi)或間接子類(lèi)都可以設(shè)置文本、設(shè)置圖標(biāo)、注冊(cè)事件監(jiān)聽(tīng)程序都可以設(shè)置文本、設(shè)置圖標(biāo)、注冊(cè)事件監(jiān)聽(tīng)程序30普通按鈕普通按鈕JButtonJButton構(gòu)造方法構(gòu)造方法JButton()創(chuàng)建一個(gè)既沒(méi)有顯示文本也沒(méi)有圖標(biāo)的按創(chuàng)建一個(gè)既沒(méi)有顯示文本也沒(méi)有圖標(biāo)的按鈕鈕JButton(Iconicon)創(chuàng)建一個(gè)沒(méi)有顯
24、示文本但有圖標(biāo)的創(chuàng)建一個(gè)沒(méi)有顯示文本但有圖標(biāo)的按鈕按鈕JButton(Stringtext)創(chuàng)建一個(gè)有顯示文本但沒(méi)有圖標(biāo)創(chuàng)建一個(gè)有顯示文本但沒(méi)有圖標(biāo)的按鈕的按鈕JButton(Stringtext,Iconicon)創(chuàng)建一個(gè)既有顯示文本創(chuàng)建一個(gè)既有顯示文本又有圖標(biāo)的按鈕又有圖標(biāo)的按鈕和和Button不同的是,不同的是,Button組件上只能顯示文字,組件上只能顯示文字,JButton可以顯示文字和可以顯示文字和圖標(biāo)圖標(biāo)。31普通按鈕普通按鈕JButtonJButton構(gòu)造顯示文本為構(gòu)造顯示文本為“Sample”的按鈕的按鈕構(gòu)造顯示文本為構(gòu)造顯示文本為“Sample”、帶有鉆石形狀小圖、帶有鉆石
25、形狀小圖標(biāo)的按鈕標(biāo)的按鈕JButton b=new JButton(“Sample”);JButton b=new JButton(Sample,new ImageIcon(icon.gif);32切換按鈕切換按鈕JToggleButtonJToggleButton是具有兩種狀態(tài)的按鈕,即是具有兩種狀態(tài)的按鈕,即選選中狀態(tài)中狀態(tài)和和未選中狀態(tài)未選中狀態(tài)JToggleButtonJToggleButton的構(gòu)造方法主要有:的構(gòu)造方法主要有:JToggleButton(Stringtext,booleanselected)創(chuàng)創(chuàng)建建一一個(gè)個(gè)有有顯示文本和指定初始狀態(tài)但沒(méi)有圖標(biāo)的切換按鈕顯示文本和指定
26、初始狀態(tài)但沒(méi)有圖標(biāo)的切換按鈕JToggleButton(Stringtext,Iconicon)創(chuàng)創(chuàng)建建一一個(gè)個(gè)既既有有顯顯示示文本又有圖標(biāo)的切換按鈕文本又有圖標(biāo)的切換按鈕JToggleButton(Stringtext,Iconicon,booleanselected)創(chuàng)建一個(gè)既有顯示文本又有圖標(biāo)和指定初始狀態(tài)的切換創(chuàng)建一個(gè)既有顯示文本又有圖標(biāo)和指定初始狀態(tài)的切換按鈕按鈕33JCheckBox,JRadioButton都是都是JToggleButton的子類(lèi)的子類(lèi),構(gòu)造方法的格式與構(gòu)造方法的格式與JToggleButton相同,它們也都具有選中和未選中兩相同,它們也都具有選中和未選中兩種狀態(tài)
27、種狀態(tài)JCheckBox復(fù)選框典型的應(yīng)用是多項(xiàng)選擇題復(fù)選框典型的應(yīng)用是多項(xiàng)選擇題isSelected()方法獲知按鈕的當(dāng)前狀態(tài)方法獲知按鈕的當(dāng)前狀態(tài)34JRadioButton單選按鈕與單選按鈕與ButtonGroup按鈕組按鈕組JRadioButton單選按鈕組的典型應(yīng)用是單選按鈕組的典型應(yīng)用是單項(xiàng)選擇題單項(xiàng)選擇題,例如選,例如選擇題有擇題有3個(gè)答案,只允許選其中之一,需使用個(gè)答案,只允許選其中之一,需使用3個(gè)單選按鈕組個(gè)單選按鈕組成的按鈕組。成的按鈕組。按鈕組類(lèi)按鈕組類(lèi)ButtonGroup常用方法:常用方法:(1)ButtonGroup():構(gòu)造按鈕組對(duì)象(構(gòu)造方法只有:構(gòu)造按鈕組對(duì)象(
28、構(gòu)造方法只有1個(gè))。個(gè))。(2)voidadd(AbstractButtonb):將按鈕添加到組。:將按鈕添加到組。(3)voidclearSelection():清除按鈕組中按鈕的選中狀態(tài)。:清除按鈕組中按鈕的選中狀態(tài)。(4)intgetButtonCount():返回按鈕組的按鈕個(gè)數(shù)。:返回按鈕組的按鈕個(gè)數(shù)。(5)voidremove(AbstractButtonb):從按鈕組中移除按鈕。:從按鈕組中移除按鈕。35JCheckBox復(fù)選框復(fù)選框【例例7】編寫(xiě)使用復(fù)選框進(jìn)行多項(xiàng)興趣愛(ài)好選擇的編寫(xiě)使用復(fù)選框進(jìn)行多項(xiàng)興趣愛(ài)好選擇的程序。用鼠標(biāo)單擊各個(gè)復(fù)選框,均會(huì)在下面的只讀程序。用鼠標(biāo)單擊各個(gè)復(fù)
29、選框,均會(huì)在下面的只讀文本框中動(dòng)態(tài)顯示選擇結(jié)果,運(yùn)行效果如下圖:文本框中動(dòng)態(tài)顯示選擇結(jié)果,運(yùn)行效果如下圖:程序代碼:程序代碼:Example6.java36JRadioButton單選按鈕與單選按鈕與ButtonGroup按鈕組按鈕組【例例8】編寫(xiě)使用單選按鈕組進(jìn)行志向選擇的程序,編寫(xiě)使用單選按鈕組進(jìn)行志向選擇的程序,要求每次只選一個(gè)志向。程序運(yùn)行效果如下:要求每次只選一個(gè)志向。程序運(yùn)行效果如下:參考程序:參考程序:Example66.java37標(biāo)簽(標(biāo)簽(JLabel)標(biāo)簽(標(biāo)簽(JLabel)對(duì)象通常用于顯示提示性的文本信息)對(duì)象通常用于顯示提示性的文本信息或圖標(biāo)或圖標(biāo)構(gòu)造方法主要有:構(gòu)
30、造方法主要有:JLabel(Stringtext)構(gòu)造一個(gè)顯示文本信息的標(biāo)簽構(gòu)造一個(gè)顯示文本信息的標(biāo)簽JLabel(Stringtext,inthorizontalAlignment)構(gòu)構(gòu)造造一一個(gè)個(gè)顯示文本信息的標(biāo)簽顯示文本信息的標(biāo)簽JLabel(Iconimage,inthorizontalAlignment)構(gòu)構(gòu)造造一一個(gè)個(gè)顯顯 示示 圖圖 標(biāo)標(biāo) 的的 標(biāo)標(biāo) 簽簽,水水 平平 對(duì)對(duì) 齊齊 方方 式式 由由 int型型 參參 數(shù)數(shù)horizontalAlignment指定指定JLabel(Stringtext,Iconicon,inthorizontalAlignment)構(gòu)構(gòu)造造一一個(gè)個(gè)
31、同同時(shí)時(shí)顯顯示示文文本本信信息息和和圖圖標(biāo)標(biāo)的的標(biāo)標(biāo)簽簽,水水平平對(duì)對(duì)齊齊方方式式horizontalAlignment指定指定38標(biāo)簽(標(biāo)簽(JLabel)表示水平對(duì)齊方式的表示水平對(duì)齊方式的int型參數(shù)型參數(shù)horizontalAlignment的的取值可為取值可為JLabel.LEFT、JLabel.RIGHT、JLabel.CENTER等常量,分別表示左對(duì)齊、右對(duì)等常量,分別表示左對(duì)齊、右對(duì)齊和居中。齊和居中。例例:JLabellabel=newJLabel(“hello”,JLabel.LEFT);39組合框(組合框(JComboBox)組合框(組合框(JComboBox)是一個(gè)下拉
32、式菜單,它有)是一個(gè)下拉式菜單,它有兩種形式:兩種形式:不可編輯的和可編輯的不可編輯的和可編輯的,對(duì)不可編輯的,對(duì)不可編輯的JComboBox,用戶只能在現(xiàn)有的選項(xiàng)列表中進(jìn)行,用戶只能在現(xiàn)有的選項(xiàng)列表中進(jìn)行選擇;而可編輯的選擇;而可編輯的JComboBox,用戶既可以在現(xiàn),用戶既可以在現(xiàn)有選項(xiàng)中選擇,也可以輸入新的內(nèi)容有選項(xiàng)中選擇,也可以輸入新的內(nèi)容40JComboBox構(gòu)造方法構(gòu)造方法JComboBox()創(chuàng)創(chuàng)建建一一個(gè)個(gè)沒(méi)沒(méi)有有任任何何可可選選項(xiàng)項(xiàng)的的組組合框合框JComboBox(Objectitems)根據(jù)根據(jù)Object數(shù)組數(shù)組創(chuàng)建組合框,創(chuàng)建組合框,Object數(shù)組的元素即為組合框
33、中的可數(shù)組的元素即為組合框中的可選項(xiàng)選項(xiàng)例:創(chuàng)建一個(gè)具有四個(gè)可選項(xiàng)的組合框:例:創(chuàng)建一個(gè)具有四個(gè)可選項(xiàng)的組合框:StringitemList=One,Two,Three,Four;JComboBoxjcb=newJComboBox(itemList);41JComboBox類(lèi)中方法類(lèi)中方法publicvoidaddItem(ObjectanObject)在在末末尾尾位位置添加新的可選項(xiàng)置添加新的可選項(xiàng)publicvoidinsertItemAt(ObjectanObject,intindex)在在index指定的位置添加新的可選項(xiàng)指定的位置添加新的可選項(xiàng)anObjectpublicvoidre
34、moveAllItems()刪除所有可選項(xiàng)刪除所有可選項(xiàng)publicvoidremoveItem(ObjectanObject)刪刪除除由由anObject指定的可選項(xiàng)指定的可選項(xiàng)publicvoidremoveItemAt(intanIndex)刪除指定刪除指定位置(由位置(由anIndex指定)的可選項(xiàng)指定)的可選項(xiàng)42組合框(組合框(JComboBox)應(yīng)用)應(yīng)用【例例8】編程實(shí)現(xiàn)如下界面所示的運(yùn)行效果。編程實(shí)現(xiàn)如下界面所示的運(yùn)行效果。程序代碼:程序代碼:JComboBoxDemo.java43列表框(列表框(JList)列表(列表(JList)是可供用戶進(jìn)行選擇的一系列可選項(xiàng))是可供用
35、戶進(jìn)行選擇的一系列可選項(xiàng)構(gòu)造方法構(gòu)造方法JList()構(gòu)造一個(gè)空列表構(gòu)造一個(gè)空列表JList(ObjectlistData)構(gòu)構(gòu)造造一一個(gè)個(gè)列列表表,列表的可選項(xiàng)由對(duì)象數(shù)組列表的可選項(xiàng)由對(duì)象數(shù)組listData指定指定JList(VectorlistData)構(gòu)造一個(gè)列表,構(gòu)造一個(gè)列表,列表的可選項(xiàng)由列表的可選項(xiàng)由Vector型參數(shù)型參數(shù)listData指定指定44列表框(列表框(JList)例:根據(jù)例:根據(jù)String數(shù)組構(gòu)造一個(gè)包含四個(gè)可選項(xiàng)的列數(shù)組構(gòu)造一個(gè)包含四個(gè)可選項(xiàng)的列表表也可通過(guò)下面的命令創(chuàng)建:也可通過(guò)下面的命令創(chuàng)建:Stringdata=one,two,three,four;JL
36、istdataList=newJList(data);VectorlistData=newVector();listData.addElement(one);listData.addElement(two);listData.addElement(three);listData.addElement(four);JListlist=newJList(listData);45列表框(列表框(JList)的應(yīng)用)的應(yīng)用【例例9】編程用編程用列表框(列表框(JList)實(shí)現(xiàn)如下界面所示實(shí)現(xiàn)如下界面所示的運(yùn)行效果。的運(yùn)行效果。程序代碼:程序代碼:JListDemo.java46文本組件(文本組件(JT
37、extComponent)用于顯示信息和提供用戶輸入功能用于顯示信息和提供用戶輸入功能在在Swing中提供了中提供了文本域文本域(JTextField)、)、口令輸入口令輸入域(域(JPasswordField)、文本區(qū)()、文本區(qū)(JTextArea)等多)等多個(gè)文本組件個(gè)文本組件,都有一個(gè)共同的基類(lèi)都有一個(gè)共同的基類(lèi)JTextComponent。47JTextComponent一些方法一些方法getSelectedText()從文本組件中提取被選中的文本內(nèi)容從文本組件中提取被選中的文本內(nèi)容getText()從文本組件中提取所有文本內(nèi)容從文本組件中提取所有文本內(nèi)容getText(intoff
38、s,intlen)從從文文本本組組件件中中提提取取指指定定范范圍圍的的文文本內(nèi)容本內(nèi)容select(intselectionStart,intselectionEnd)在在文文本本組組件件中中選選中指定范圍的文本內(nèi)容中指定范圍的文本內(nèi)容selectAll()在文本組件中選中所有文本內(nèi)容在文本組件中選中所有文本內(nèi)容setEditable(booleanb)設(shè)置為可編輯或不可編輯狀態(tài)設(shè)置為可編輯或不可編輯狀態(tài)setText(Stringt)設(shè)置文本組件中的文本內(nèi)容設(shè)置文本組件中的文本內(nèi)容setDocument(Documentdoc)設(shè)置文本組件的文檔設(shè)置文本組件的文檔copy()復(fù)制選中的文本到
39、剪貼板復(fù)制選中的文本到剪貼板cut()剪切選中的文本剪貼板剪切選中的文本剪貼板paste()將剪貼板的內(nèi)容粘貼到當(dāng)前位置將剪貼板的內(nèi)容粘貼到當(dāng)前位置48文本域文本域 JTextField文本域是一個(gè)單行的文本輸入框,可用于輸入少量文本域是一個(gè)單行的文本輸入框,可用于輸入少量文本文本主要構(gòu)造方法:主要構(gòu)造方法:JTextField(intcolumns)構(gòu)構(gòu)造造一一個(gè)個(gè)具具有有指指定定列列數(shù)數(shù)的空文本域,的空文本域,JTextField(Stringtext)構(gòu)構(gòu)造造一一個(gè)個(gè)顯顯示示指指定定初初始始字符串的文本域字符串的文本域JTextField(Stringtext,intcolumns)構(gòu)構(gòu)
40、造造一一個(gè)個(gè)具有指定列數(shù)、并顯示指定初始字符串的文本域具有指定列數(shù)、并顯示指定初始字符串的文本域例:例:構(gòu)造一個(gè)列數(shù)為構(gòu)造一個(gè)列數(shù)為35、初始字符串為、初始字符串為“SingleLine”的的文本域文本域JTextFieldtf=newJTextField(“SingleLine”,35);49文本區(qū)文本區(qū)JTextArea文本區(qū)是一個(gè)多行多列的文本輸入框。文本區(qū)是一個(gè)多行多列的文本輸入框。主要構(gòu)造方法:主要構(gòu)造方法:JTextArea()構(gòu)造一個(gè)空文本區(qū)構(gòu)造一個(gè)空文本區(qū)JTextArea(Stringtext)構(gòu)構(gòu)造造一一個(gè)個(gè)顯顯示示指指定定初初始字符串的文本區(qū)始字符串的文本區(qū)JTextAr
41、ea(introws,intcolumns)構(gòu)構(gòu)造造一一個(gè)個(gè)具具有指定行數(shù)和列數(shù)的空文本區(qū),有指定行數(shù)和列數(shù)的空文本區(qū),JTextArea(Stringtext,introws,intcolumns)構(gòu)構(gòu)造造一一個(gè)個(gè)具具有有指指定定行行數(shù)數(shù)和和列列數(shù)數(shù)、并并顯顯示示指指定定初初始始字符串的文本區(qū)字符串的文本區(qū)50文本區(qū)文本區(qū)JTextArea例:例:JTextAreata=newJTextArea(“Initialtext”,4,30)對(duì)文本區(qū)進(jìn)行操作的方法對(duì)文本區(qū)進(jìn)行操作的方法append(Stringstr)將指定文本追加到文本區(qū)。將指定文本追加到文本區(qū)。insert(Stringstr,
42、intpos)將指定文本插入到文本區(qū)的特定位置。將指定文本插入到文本區(qū)的特定位置。replaceRange(Stringstr,intstart,intend)指定文本替換文本區(qū)中的部分內(nèi)容指定文本替換文本區(qū)中的部分內(nèi)容 51JPasswordField密碼框密碼框JPasswordField顯示顯示特殊符號(hào)特殊符號(hào),如,如*,達(dá)到保密目的。,達(dá)到保密目的。密碼框是文本框的子類(lèi),文本框和密碼框都屬于文本密碼框是文本框的子類(lèi),文本框和密碼框都屬于文本組件。組件。密碼框密碼框JPasswordField常用方法:常用方法:(1)JPasswordField()(2)JPasswordField(i
43、ntcolumns)(3)voidsetEchoChar(charc):設(shè)置密碼框回顯字符。設(shè)置密碼框回顯字符。(4)chargetPassword():獲取密碼框字符。:獲取密碼框字符。出于安全考慮,不要使用已過(guò)時(shí)的出于安全考慮,不要使用已過(guò)時(shí)的getText()方法獲取方法獲取密碼框字符。密碼框字符。52JTextField文本框與文本框與JPasswordField密碼框密碼框【例例10】編寫(xiě)一個(gè)編寫(xiě)一個(gè)Java程序,在程序中生成一個(gè)框程序,在程序中生成一個(gè)框架窗口,不使用窗口的布局管理器,加入組件,制架窗口,不使用窗口的布局管理器,加入組件,制作密碼驗(yàn)證窗口。運(yùn)行效果如下圖:作密碼驗(yàn)證
44、窗口。運(yùn)行效果如下圖:程序代碼:程序代碼:PassWordWin.java53菜單組件菜單組件SWING包中提供的多種菜單組件包中提供的多種菜單組件JMenuBarJMenuJMenuItem JCheckBoxMenuItemJRadioButtonMenuItemJPopupMenu54菜單欄菜單欄JMenuBarJMenuBar菜單欄是窗口中的主菜單,用來(lái)包容一組菜單菜單欄是窗口中的主菜單,用來(lái)包容一組菜單,只只有一種構(gòu)造方法:有一種構(gòu)造方法:JMenuBar()。JFrame、JApplet和和JDialog等類(lèi)中定義了等類(lèi)中定義了setJMenuBar(JMenuBarmenu)方法
45、,可以把菜單方法,可以把菜單欄放到窗口的上方欄放到窗口的上方例:例:JFrameframe=newJFrame(“JMenuBar”);JMenuBarmb=newJMenuBar();frame.setJMenuBar(mb);55菜單菜單JMenuJMenu菜單是最基本的下拉菜單,用來(lái)包容一組菜單項(xiàng)或菜單是最基本的下拉菜單,用來(lái)包容一組菜單項(xiàng)或子菜單。構(gòu)造方法如下子菜單。構(gòu)造方法如下:publicMenu(Stringlabel)/其中其中l(wèi)abel指定了菜單上的文本。指定了菜單上的文本。菜單加入菜單欄或者另一個(gè)菜單中菜單加入菜單欄或者另一個(gè)菜單中JMenumenu1=newJMenu(F
46、ile);JMenumenu2=newJMenu(Option);JMenumenu3=newJMenu(Help);mb.add(menu1);mb.add(menu2);mb.add(menu3);56菜單項(xiàng)菜單項(xiàng)JMenuItemJMenuItem常用的菜單項(xiàng)構(gòu)造方法常用的菜單項(xiàng)構(gòu)造方法JMenuItem(Iconicon)構(gòu)構(gòu)造造一一個(gè)個(gè)只只顯顯示示圖圖標(biāo)標(biāo)的的菜菜單單項(xiàng),圖標(biāo)由項(xiàng),圖標(biāo)由Icon型參數(shù)型參數(shù)icon指定指定JMenuItem(Stringtext)構(gòu)構(gòu)造造一一個(gè)個(gè)只只顯顯示示文文本本的的菜菜單項(xiàng),文本由單項(xiàng),文本由String型參數(shù)型參數(shù)text指定指定JMenuIt
47、em(Stringtext,Iconicon)構(gòu)構(gòu)造造一一個(gè)個(gè)同同時(shí)時(shí)顯顯示示文文本本和和圖圖標(biāo)標(biāo)的的菜菜單單項(xiàng)項(xiàng),文文本本由由String型型參參數(shù)數(shù)text指指定定,圖標(biāo)由圖標(biāo)由Icon型參數(shù)型參數(shù)icon指定指定JMenuItem(Stringtext,intmnemonic)構(gòu)造一個(gè)顯構(gòu)造一個(gè)顯示文本并且有快捷鍵的菜單項(xiàng),文本由示文本并且有快捷鍵的菜單項(xiàng),文本由String型參數(shù)型參數(shù)text指定,快捷鍵由指定,快捷鍵由int型參數(shù)型參數(shù)mnemonic指定指定JMenum1=newJMenu(“File”);JMenuItemmi1=newJMenuItem(Save,KeyEven
48、t.VK_S);JMenuItemmi2=newJMenuItem(“Load”);JMenuItemmi3=newJMenuItem(“Quit”);m1.add(mi1);m1.add(mi2);m1.add(mi3);構(gòu)造了三個(gè)菜單項(xiàng),分別顯示文本“Save”、“Load”和“Quit”,其中第一個(gè)菜單項(xiàng)的快捷鍵為Ctrl+S,三個(gè)菜單項(xiàng)均被加入菜單m1中 快捷鍵也可以在菜單項(xiàng)被創(chuàng)建之后,通過(guò)setMnemonic(char mnemonic)方法進(jìn)行設(shè)置 57菜單方法菜單方法addSeparator()和和insertSeparator(intindex):菜單菜單項(xiàng)間項(xiàng)間加入分隔線加
49、入分隔線例:例:JMenum1=newJMenu(“File”);m1.add(mi1);m1.add(mi2);m1.addSeparator();m1.add(mi3);58復(fù)選和單選菜單項(xiàng)復(fù)選和單選菜單項(xiàng)這是兩種特殊的菜單項(xiàng),在復(fù)選菜單項(xiàng)前面有一這是兩種特殊的菜單項(xiàng),在復(fù)選菜單項(xiàng)前面有一個(gè)小方框,在單選菜單項(xiàng)前面有一個(gè)小圓圈個(gè)小方框,在單選菜單項(xiàng)前面有一個(gè)小圓圈,可以可以進(jìn)行選中或不選中的操作,使用方法與復(fù)選按鈕進(jìn)行選中或不選中的操作,使用方法與復(fù)選按鈕和單選按鈕類(lèi)似和單選按鈕類(lèi)似當(dāng)菜單項(xiàng)的檢驗(yàn)狀態(tài)發(fā)生改變時(shí),會(huì)引發(fā)當(dāng)菜單項(xiàng)的檢驗(yàn)狀態(tài)發(fā)生改變時(shí),會(huì)引發(fā)ItemEvent事件事件,使用使用
50、ItemListener中的中的itemStateChanged()對(duì)此事件進(jìn)行響應(yīng)對(duì)此事件進(jìn)行響應(yīng)59構(gòu)造方法構(gòu)造方法復(fù)選菜單項(xiàng)構(gòu)造方法復(fù)選菜單項(xiàng)構(gòu)造方法單選菜單項(xiàng)構(gòu)造方法單選菜單項(xiàng)構(gòu)造方法boolean型參數(shù)指定菜單項(xiàng)的初始狀態(tài)型參數(shù)指定菜單項(xiàng)的初始狀態(tài)JCheckBoxMenuItem(Iconicon)JCheckBoxMenuItem(Stringtext)JCheckBoxMenuItem(Stringtext,booleanb)JCheckBoxMenuItem(Stringtext,Iconicon)JCheckBoxMenuItem(Stringtext,Iconicon,b
51、ooleanb)JRadioButtonMenuItem(Iconicon)JRadioButtonMenuItem(Iconicon,booleanselected)JRadioButtonMenuItem(Stringtext)JRadioButtonMenuItem(Stringtext,booleanselected)JRadioButtonMenuItem(Stringtext,Iconicon)JRadioButtonMenuItem(Stringtext,Iconicon,booleanselected)60菜單組件菜單組件編程實(shí)現(xiàn)如下圖運(yùn)行結(jié)果:編程實(shí)現(xiàn)如下圖運(yùn)行結(jié)果:程序代碼
52、:程序代碼:Example22.java61彈出式菜單彈出式菜單JPopupMenuJPopupMenu彈出式菜單(彈出式菜單(JPopupMenuJPopupMenu)是一種比較特殊的獨(dú)立)是一種比較特殊的獨(dú)立菜單,可以根據(jù)需要顯示在指定位置。有兩種構(gòu)造菜單,可以根據(jù)需要顯示在指定位置。有兩種構(gòu)造方法方法publicJPopupMenu()構(gòu)造一個(gè)沒(méi)有名稱的彈出式菜構(gòu)造一個(gè)沒(méi)有名稱的彈出式菜單單publicJPopupMenu(Stringlabel)構(gòu)造一個(gè)有指定名構(gòu)造一個(gè)有指定名稱的彈出式菜單稱的彈出式菜單62彈出式菜單彈出式菜單構(gòu)造一個(gè)名為構(gòu)造一個(gè)名為“Popup”的彈出式菜單的彈出式
53、菜單加入菜單或菜單項(xiàng)加入菜單或菜單項(xiàng)在顯示彈出式菜單時(shí),必須調(diào)用在顯示彈出式菜單時(shí),必須調(diào)用show()方法方法JPopupMenup=newJPopupMenu(“Popup”)JMenuItems=newJMenuItem(“Save”);JMenuIteml=newJMenuItem(“Load”);p.add(s);p.add(l);publicvoidshow(Componentorigin,intx,inty)需要有一個(gè)組件作參數(shù),該組件的位置將需要有一個(gè)組件作參數(shù),該組件的位置將作為顯示彈出式菜單的參考原點(diǎn)作為顯示彈出式菜單的參考原點(diǎn) 63對(duì)話框?qū)υ捒騄DialogJDialog
54、對(duì)話框(對(duì)話框(JDialog)是與框架類(lèi)似的可移動(dòng)窗口,)是與框架類(lèi)似的可移動(dòng)窗口,能夠被設(shè)置為能夠被設(shè)置為“模式模式”(model)(model)窗口,即在對(duì)話框窗口,即在對(duì)話框被關(guān)閉前,其他窗口無(wú)法接收任何輸入信息。被關(guān)閉前,其他窗口無(wú)法接收任何輸入信息。對(duì)話框的構(gòu)造方法對(duì)話框的構(gòu)造方法JDialog(Frameowner)構(gòu)造一個(gè)沒(méi)有標(biāo)題的非模式構(gòu)造一個(gè)沒(méi)有標(biāo)題的非模式對(duì)話框?qū)υ捒騄Dialog(Frameowner,booleanmodal)構(gòu)造一個(gè)沒(méi)構(gòu)造一個(gè)沒(méi)有標(biāo)題的對(duì)話框,有標(biāo)題的對(duì)話框,boolean型參數(shù)型參數(shù)modal指定對(duì)話框是否指定對(duì)話框是否為模式窗口為模式窗口JDia
55、log(Frameowner,Stringtitle)構(gòu)造一個(gè)有標(biāo)題構(gòu)造一個(gè)有標(biāo)題的非模式對(duì)話框,的非模式對(duì)話框,JDialog(Frameowner,Stringtitle,booleanmodal)構(gòu)造一個(gè)有標(biāo)題的對(duì)話框構(gòu)造一個(gè)有標(biāo)題的對(duì)話框64對(duì)話框?qū)υ捒騄Dialog例:例:JDialogdialog=newJDialog(frame,“Dialog”,true)setVisible(true)方法顯示,方法顯示,setVisible(false)方法可以方法可以將一個(gè)對(duì)話框隱藏起來(lái)將一個(gè)對(duì)話框隱藏起來(lái)65標(biāo)準(zhǔn)對(duì)話框標(biāo)準(zhǔn)對(duì)話框JOptionPaneSWING中還提供了用于顯示標(biāo)準(zhǔn)對(duì)話框
56、中還提供了用于顯示標(biāo)準(zhǔn)對(duì)話框(JOptionPane)的)的JOptionPane類(lèi)類(lèi)定義了多個(gè)定義了多個(gè)showXxxDialog形式的靜態(tài)方法形式的靜態(tài)方法showConfirmDialog確認(rèn)對(duì)話框,顯示問(wèn)題,要求確認(rèn)對(duì)話框,顯示問(wèn)題,要求用戶進(jìn)行確認(rèn)(用戶進(jìn)行確認(rèn)(yes/no/cancel)showInputDialog輸入對(duì)話框,提示用戶進(jìn)行輸入輸入對(duì)話框,提示用戶進(jìn)行輸入showMessageDialog信息對(duì)話框,顯示信息,告知信息對(duì)話框,顯示信息,告知用戶發(fā)生了什么情況用戶發(fā)生了什么情況showOptionDialog選項(xiàng)對(duì)話框,顯示選項(xiàng),要求用選項(xiàng)對(duì)話框,顯示選項(xiàng),要求用戶
57、進(jìn)行選擇戶進(jìn)行選擇66文件對(duì)話框文件對(duì)話框JFileChooser專門(mén)用于對(duì)文件(或目錄)進(jìn)行瀏覽和選擇的對(duì)話專門(mén)用于對(duì)文件(或目錄)進(jìn)行瀏覽和選擇的對(duì)話框,常用的構(gòu)造方法框,常用的構(gòu)造方法:JFileChooser()根據(jù)用戶的缺省目錄創(chuàng)建文件對(duì)話根據(jù)用戶的缺省目錄創(chuàng)建文件對(duì)話框框JFileChooser(FilecurrentDirectory)根據(jù)根據(jù)File型參數(shù)型參數(shù)currentDirectory指定的目錄創(chuàng)建文件對(duì)話框指定的目錄創(chuàng)建文件對(duì)話框JFileChooser(StringcurrentDirectoryPath)根據(jù)根據(jù)String型參數(shù)型參數(shù)currentDirecto
58、ryPath指定的目錄創(chuàng)建文件指定的目錄創(chuàng)建文件對(duì)話框?qū)υ捒?7文件對(duì)話框文件對(duì)話框JFileChooser顯示顯示showOpenDialog(Componentparent)顯示一個(gè)顯示一個(gè)“打開(kāi)打開(kāi)”文件對(duì)話框文件對(duì)話框showSaveDialog(Componentparent)顯示顯示“保存保存”文件對(duì)話框文件對(duì)話框showDialog(Componentparent,StringapproveButtonText)顯示一個(gè)自定義的文件對(duì)話框顯示一個(gè)自定義的文件對(duì)話框標(biāo)題和按鈕上的文本由標(biāo)題和按鈕上的文本由String型參數(shù)型參數(shù)approveButtonText指定指定Compon
59、ent型參數(shù),指定型參數(shù),指定 “父組件父組件”,決定了文件對(duì)話框,決定了文件對(duì)話框的顯示位置,如果該參數(shù)為的顯示位置,如果該參數(shù)為null,則文件對(duì)話框顯示在屏幕,則文件對(duì)話框顯示在屏幕正中正中通過(guò)通過(guò)getSelectedFile()方法取得用戶所選擇的文件方法取得用戶所選擇的文件68對(duì)話框?qū)υ捒騄Dialog例:編程實(shí)現(xiàn)如下圖運(yùn)行結(jié)果:例:編程實(shí)現(xiàn)如下圖運(yùn)行結(jié)果:程序代碼:程序代碼:Example8.java69練習(xí)練習(xí)1.實(shí)現(xiàn)計(jì)算器程序界面,程序運(yùn)行效果如下圖實(shí)現(xiàn)計(jì)算器程序界面,程序運(yùn)行效果如下圖1所示:所示:2.實(shí)現(xiàn)用戶注冊(cè)界面,程序的運(yùn)行效果如下圖實(shí)現(xiàn)用戶注冊(cè)界面,程序的運(yùn)行效果如
60、下圖2所示:所示:70練習(xí)練習(xí)參考程序:參考程序:CalculatorDemo.javaRegistDemo.java71第第5 5講講 圖形用戶界面設(shè)計(jì)圖形用戶界面設(shè)計(jì)主要內(nèi)容主要內(nèi)容pAWT和和Swingp容器容器p布局布局pSwing組件組件pJava圖形設(shè)計(jì)圖形設(shè)計(jì)p事件處理事件處理72控制組件外觀控制組件外觀顏色顏色使用下面方法(在使用下面方法(在Jcomponent中定義)設(shè)置組件的前中定義)設(shè)置組件的前景色和背景色景色和背景色java.awt.Color類(lèi)的一個(gè)實(shí)例作參數(shù)類(lèi)的一個(gè)實(shí)例作參數(shù),我們可以使用我們可以使用Color類(lèi)中預(yù)定義的類(lèi)中預(yù)定義的顏色常量顏色常量,比如,比如Co
61、lor.red和和Color.blue,也可以自己創(chuàng)建新的顏色:,也可以自己創(chuàng)建新的顏色:publicvoidsetForeground(Colorc)設(shè)置前景色設(shè)置前景色publicvoidsetBackground(Colorc)設(shè)置背景色設(shè)置背景色intr=255,g=255,b=0;ColormyColor=newColor(r,g,b)73字體字體創(chuàng)建創(chuàng)建Font對(duì)象對(duì)象Font(Stringname,intstyle,intsize):創(chuàng)創(chuàng)建建指指定定三三個(gè)參數(shù):字體名、字體風(fēng)格和尺寸大小的字體。個(gè)參數(shù):字體名、字體風(fēng)格和尺寸大小的字體。其其中中字字體體風(fēng)風(fēng)格格有有如如下下三三種種
62、:Font.BOLD(粗粗體體)、Font.ITALIC(斜體)、(斜體)、Font.PLAIN(普通體)。(普通體)。setFont(Fontf)方法對(duì)組件中文本的字體進(jìn)行設(shè)定方法對(duì)組件中文本的字體進(jìn)行設(shè)定參數(shù)參數(shù)java.awt.Font類(lèi)的一個(gè)實(shí)例類(lèi)的一個(gè)實(shí)例Fontf=newFont(“TimesNewRoman”,Font.PLAIN,14);字體名稱字體名稱 字體的大小字體的大小 字體的風(fēng)格字體的風(fēng)格 Font.BOLDFont.ITALICFont.PLAINFont.BOLD+Font.ITALIC74顏色與字體顏色與字體例:例:繪制文字繪制文字:編寫(xiě)一個(gè):編寫(xiě)一個(gè)Java程序
63、,生成一個(gè)窗口,程序,生成一個(gè)窗口,在窗口中分別顯示紅色宋體和黑色粗體的在窗口中分別顯示紅色宋體和黑色粗體的“Java程程序設(shè)計(jì)序設(shè)計(jì)”文字。文字。參考程序:參考程序:PaintFont.java75繪圖繪圖當(dāng)組件被顯示時(shí),調(diào)用當(dāng)組件被顯示時(shí),調(diào)用java.awt.Component類(lèi)中定義類(lèi)中定義paint(Graphicsg)方法方法每當(dāng)需要重繪組件時(shí),調(diào)用每當(dāng)需要重繪組件時(shí),調(diào)用repaint()方法,該方法將方法,該方法將自動(dòng)調(diào)用自動(dòng)調(diào)用paint(Graphicsg)javax.swing.JComponent繼承繼承java.awt.Component,它的它的paint(Grap
64、hicsg)方法中,會(huì)調(diào)用如下三個(gè)方法:方法中,會(huì)調(diào)用如下三個(gè)方法:paintComponent(Graphicsg)繪制組件繪制組件paintBorder(Graphicsg)繪制組件的邊框繪制組件的邊框paintChildren(Graphicsg)繪制組件中的子組件繪制組件中的子組件在組件上繪制圖形,只在組件上繪制圖形,只需要改寫(xiě)這個(gè)方法需要改寫(xiě)這個(gè)方法 76GraphicsGraphics類(lèi)的繪圖方法類(lèi)的繪圖方法1 1、畫(huà)線、畫(huà)線在在Java的的Graphics類(lèi)類(lèi)中中提提供供畫(huà)畫(huà)線線功功能能的的是是drawLine()方方法,其調(diào)用格式如下:法,其調(diào)用格式如下:drawLine(in
65、tx1,inty1,intx2,inty2)該該方方法法需需要要設(shè)設(shè)置置四四個(gè)個(gè)參參數(shù)數(shù),其其中中x1,y1表表示示線線段段的的一一個(gè)個(gè)坐坐標(biāo)點(diǎn),標(biāo)點(diǎn),x2,y2表示線段的另一個(gè)坐標(biāo)點(diǎn)。表示線段的另一個(gè)坐標(biāo)點(diǎn)。2 2矩形的繪制矩形的繪制Graphics類(lèi)類(lèi)中中提提供供了了三三種種類(lèi)類(lèi)型型的的矩矩形形,它它們們分分別別是是普普通通矩矩形形、圓圓角角矩矩形形和和立立體體矩矩形形。而而每每一一種種矩矩形形都都提提供供兩兩種種不不同同風(fēng)風(fēng)格格的的方方法法,一一種種是是僅僅畫(huà)畫(huà)出出矩矩形形的的邊邊框框;另另一一種種是是不不僅僅畫(huà)畫(huà)出出邊邊框,并且還用相同的顏色將整個(gè)矩形區(qū)域填滿??颍⑶疫€用相同的顏色將
66、整個(gè)矩形區(qū)域填滿。772.矩形的繪制矩形的繪制(1 1)普通矩形)普通矩形drawRect(intx,inty,intwidth,intheight)/邊框型風(fēng)格邊框型風(fēng)格fillRect(intx,inty,intwidth,intheight)/填充型風(fēng)格填充型風(fēng)格其其中中頭頭兩兩個(gè)個(gè)參參數(shù)數(shù)分分別別表表示示矩矩形形左左上上角角的的x坐坐標(biāo)標(biāo)和和y坐標(biāo),后兩個(gè)參數(shù)分別表示矩形的寬度和高度。坐標(biāo),后兩個(gè)參數(shù)分別表示矩形的寬度和高度。782.矩形的繪制矩形的繪制 (2 2)立立體體矩矩形形立立體體矩矩形形也也可可以以說(shuō)說(shuō)是是三三維維矩矩形形。其其實(shí)實(shí)僅僅僅僅是是在在矩矩形形的的邊邊框框上上增增加加一一點(diǎn)點(diǎn)陰陰影影,使使矩矩形形看看上上去去相相對(duì)對(duì)表表平平面面好好像像有有凸凸出出或或凹凹下下的的效效果果,其其調(diào)調(diào)用方法的格式如下:用方法的格式如下:draw3DRect(int x,int y,int width,int height,booleanraised)fill3DRect(int x,int y,int width,int height,booleanraised)這這兩兩個(gè)個(gè)
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中語(yǔ)文作文素材:30篇文學(xué)名著開(kāi)場(chǎng)白
- 初中語(yǔ)文答題技巧:現(xiàn)代文閱讀-說(shuō)明文閱讀知識(shí)點(diǎn)總結(jié)
- 初中語(yǔ)文作文十大??荚掝}+素材
- 初中語(yǔ)文作文素材:描寫(xiě)冬天的好詞、好句、好段總結(jié)
- 初中語(yǔ)文必考名著總結(jié)
- 初中語(yǔ)文作文常見(jiàn)主題總結(jié)
- 初中語(yǔ)文考試常考名著總結(jié)
- 初中語(yǔ)文必考50篇古詩(shī)文默寫(xiě)
- 初中語(yǔ)文易錯(cuò)易混詞總結(jié)
- 初中語(yǔ)文228條文學(xué)常識(shí)
- 初中語(yǔ)文作文素材:30組可以用古詩(shī)詞當(dāng)作文標(biāo)題
- 初中語(yǔ)文古代文化常識(shí)七大類(lèi)別總結(jié)
- 初中語(yǔ)文作文素材:100個(gè)文藝韻味小短句
- 初中語(yǔ)文閱讀理解33套答題公式
- 初中語(yǔ)文228條文學(xué)常識(shí)總結(jié)