語(yǔ)言程序設(shè)計(jì)資料:九 圖形用戶界面
《語(yǔ)言程序設(shè)計(jì)資料:九 圖形用戶界面》由會(huì)員分享,可在線閱讀,更多相關(guān)《語(yǔ)言程序設(shè)計(jì)資料:九 圖形用戶界面(184頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、九九 圖形用戶界面圖形用戶界面 AWT和Swing窗口的基本原理Java布局管理Java事件處理Swing組件Java多媒體處理Applet圖形用戶界面21.1.AWT和Swing字符界面字符界面用字符串、命令行的方式與用戶交互用字符串、命令行的方式與用戶交互圖形用戶界面圖形用戶界面圖形用戶界面圖形用戶界面(Graphics User Interface(Graphics User Interface,GUI)GUI):用圖:用圖形的方式,借助菜單、按鈕等標(biāo)準(zhǔn)界面元素和鼠標(biāo)操作,形的方式,借助菜單、按鈕等標(biāo)準(zhǔn)界面元素和鼠標(biāo)操作,幫助用戶方便地向計(jì)算機(jī)系統(tǒng)發(fā)出指令、啟動(dòng)操作,并幫助用戶方便地向計(jì)
2、算機(jī)系統(tǒng)發(fā)出指令、啟動(dòng)操作,并將系統(tǒng)運(yùn)行的結(jié)果同樣以圖形方式顯示給用戶的技術(shù)。將系統(tǒng)運(yùn)行的結(jié)果同樣以圖形方式顯示給用戶的技術(shù)。用直觀的圖形來(lái)表示數(shù)據(jù)用直觀、方便的GUI標(biāo)準(zhǔn)組件來(lái)接收命令GUI組成成分的標(biāo)準(zhǔn)化應(yīng)用程序與用戶交互的方式,利用它可以接受用戶的輸應(yīng)用程序與用戶交互的方式,利用它可以接受用戶的輸入并向用戶輸出程序運(yùn)行的結(jié)果。入并向用戶輸出程序運(yùn)行的結(jié)果。圖形用戶界面3AWT和SwingJavaJava語(yǔ)言提供了兩個(gè)處理圖形用戶界面的類語(yǔ)言提供了兩個(gè)處理圖形用戶界面的類庫(kù):庫(kù):java.awtjava.awt包和包和javax.swingjavax.swing包。包。AWTAWT是抽象窗
3、口工具集是抽象窗口工具集Abstract Window ToolkitAbstract Window Toolkit的英文的英文縮寫。縮寫?!俺橄蟠翱诔橄蟠翱凇笔沟瞄_發(fā)人員所設(shè)計(jì)的界面獨(dú)立于使得開發(fā)人員所設(shè)計(jì)的界面獨(dú)立于具體的界面實(shí)現(xiàn)。即開發(fā)人員用具體的界面實(shí)現(xiàn)。即開發(fā)人員用AWTAWT開發(fā)出的圖形用戶開發(fā)出的圖形用戶界面可以適用于所有的平臺(tái)系統(tǒng)。界面可以適用于所有的平臺(tái)系統(tǒng)。SwingSwing是是一個(gè)一個(gè)帶帶有豐富有豐富組組件的件的GUIGUI工具包,它工具包,它組組成了成了JFCJFC的用的用戶戶界面功能的核心部分。界面功能的核心部分。SwingSwing與與AWTAWT核心核心組組件的
4、配合件的配合為為JavaJava應(yīng)應(yīng)用程序提供了一個(gè)用程序提供了一個(gè)更更強(qiáng)強(qiáng)大的大的GUIGUI。圖形用戶界面4ljava.awtjava.awt包包設(shè)計(jì)設(shè)計(jì)JavaJava圖形用戶界面的基本元素由抽象窗口工具圖形用戶界面的基本元素由抽象窗口工具集集-AWT-AWT提供,主要包括用戶界面組件、事件處理模型、圖提供,主要包括用戶界面組件、事件處理模型、圖形和圖像工具、布局管理器等,它們都在形和圖像工具、布局管理器等,它們都在java.awtjava.awt包中。包中。AWTAWT是是JFCJFC的一部分,它的一部分,它為為大大規(guī)規(guī)模的模的GUIGUI開開發(fā)發(fā)提供了豐富的提供了豐富的基基礎(chǔ)結(jié)礎(chǔ)結(jié)構(gòu)
5、。構(gòu)。Java.awtJava.awt包主要由包主要由組組件件類類、事件、事件類類、布局、布局類類、菜菜單類單類等等組組成。成。圖形用戶界面5java.lang.ObjectGraphicsImageColorFontBorderLayoutFlowLayoutGridLayoutCardLayoutCompontentCheckBoxGroupAWTEventMenuComponentContainerButtonLabelTextComponentCheckBoxChoiceListCanvasScrollBarWindowPanelTextFieldTextAreaFrameDialog
6、FileDialogjava.applet.Applet圖圖9.1 java.awt包中的主要類及組件類包中的主要類及組件類圖形用戶界面6AWTAWT組件分類組件分類JavaJava中構(gòu)成圖形用戶界面的各種元素稱為組件中構(gòu)成圖形用戶界面的各種元素稱為組件(Component)(Component)。JavaJava程序要顯示的程序要顯示的GUIGUI組件都是抽象類組件都是抽象類java.awt.Componentjava.awt.Component或或java.awt.MenuComponentjava.awt.MenuComponent(與菜單有關(guān)的組件)(與菜單有關(guān)的組件)的子類。的子類。
7、圖形用戶界面7組件分為容器組件分為容器(Container)(Container)類組件和非類組件和非容器類組件兩大類:容器類組件兩大類:容器類組件本身也是組件,但容器中可以包容器類組件本身也是組件,但容器中可以包含其他組件,也可以包含其他容器;含其他組件,也可以包含其他容器;非容器類組件是不能再包含其他組件的組件,非容器類組件是不能再包含其他組件的組件,其種類較多,如按鈕其種類較多,如按鈕(Button)(Button)、標(biāo)簽、標(biāo)簽(Label)(Label)、文本類組件文本類組件(TextComponent)(TextComponent)等。等。圖形用戶界面8容器又分為兩種:頂層容器和非頂
8、層容器。容器又分為兩種:頂層容器和非頂層容器。頂層容器是可以獨(dú)立的窗口,頂層容器的類是頂層容器是可以獨(dú)立的窗口,頂層容器的類是WindowWindow,WindowWindow的重要子類是的重要子類是FrameFrame和和DialogDialog;非頂層容器,不是獨(dú)立的窗口,它們必須位于窗口非頂層容器,不是獨(dú)立的窗口,它們必須位于窗口之內(nèi),非頂層容器包括之內(nèi),非頂層容器包括PanelPanel及及ScrollPanelScrollPanel等。等。圖形用戶界面9容器類容器類容器類容器類ContainerContainer是組件類是組件類ComponentComponent的子類,其特點(diǎn)的子類
9、,其特點(diǎn)是容器中可以容納其他組件。是容器中可以容納其他組件。使用使用add()add()方法可以將其他組件加入到容器中,組件方法可以將其他組件加入到容器中,組件的位置和大小由布局管理器決定。的位置和大小由布局管理器決定。如要人工控制組件在容器中的大小和位置,可取消布如要人工控制組件在容器中的大小和位置,可取消布局管理器的頁(yè)面設(shè)置,即調(diào)用方法局管理器的頁(yè)面設(shè)置,即調(diào)用方法setLayout(null)setLayout(null),然后使用然后使用ComponentComponent類的類的setLocation()setLocation()、setSize()setSize()、setBoun
10、dssetBounds()()等方法設(shè)定其大小和位置。等方法設(shè)定其大小和位置。圖形用戶界面10窗口與面板窗口與面板容器類有兩個(gè)主要子類:容器類有兩個(gè)主要子類:WindowWindow類,可以自由類,可以自由移動(dòng)、不依賴其他容器存在的窗口;移動(dòng)、不依賴其他容器存在的窗口;PanelPanel類與類與窗口類類似,但沒有標(biāo)題,且不能獨(dú)立存在,必窗口類類似,但沒有標(biāo)題,且不能獨(dú)立存在,必須包含在另一個(gè)容器中。須包含在另一個(gè)容器中??蚣茴惪蚣茴怓rameFrame的應(yīng)用的應(yīng)用窗口類窗口類WindowWindow有兩個(gè)主要組件:框架有兩個(gè)主要組件:框架FrameFrame,帶標(biāo)題且可以改變大小的窗口;對(duì)話
11、框帶標(biāo)題且可以改變大小的窗口;對(duì)話框DialogDialog,帶標(biāo)題欄但不能改變大小的窗口。帶標(biāo)題欄但不能改變大小的窗口。圖形用戶界面11用Frame類創(chuàng)建窗口Frame類的許多方法是從它的父類Window或更上層的類Container和Component繼承過(guò)來(lái)的。Frame類具有以下特點(diǎn):它是Window類的直接子類Frame類對(duì)象顯示效果是有個(gè)窗口,帶有標(biāo)題和尺寸重置角標(biāo)默認(rèn)初始化是不可見的,可以使用setVisible(true)方法使之變?yōu)榭梢娔J(rèn)的布局管理器是BorderLayout,可使用setLayout()方法改變默認(rèn)布局管理器圖形用戶界面12例例9.19.1:框架窗口的創(chuàng)建
12、。:框架窗口的創(chuàng)建。/app9_1.java/app9_1.javaimport java.awt.*;/import java.awt.*;/加載加載java.awtjava.awt類庫(kù)里的所有類類庫(kù)里的所有類import java.awt.event.*;import java.awt.event.*;public class app9_1public class app9_1static Frame frm=new Frame(static Frame frm=new Frame(這是個(gè)這是個(gè)AWTAWT程序程序););public static void main(String arg
13、s)public static void main(String args)Label lab=new Label(Label lab=new Label(我是一個(gè)標(biāo)簽我是一個(gè)標(biāo)簽););/創(chuàng)建一個(gè)標(biāo)簽對(duì)象創(chuàng)建一個(gè)標(biāo)簽對(duì)象lablabfrm.setSize(180,140);/frm.setSize(180,140);/設(shè)置框架大?。簩捲O(shè)置框架大?。簩?80180,高,高140140 frm.setBackground(Color.yellow);/frm.setBackground(Color.yellow);/設(shè)置框架背景顏色設(shè)置框架背景顏色 frm.setLocation(250,150
14、);frm.setLocation(250,150);/設(shè)置窗口的位置,相對(duì)于屏幕左上角設(shè)置窗口的位置,相對(duì)于屏幕左上角frm.add(lab);/frm.add(lab);/將標(biāo)簽對(duì)象將標(biāo)簽對(duì)象lablab加入窗口中加入窗口中 frm.addWindowListener(new WindowClose();frm.addWindowListener(new WindowClose();frm.setVisible(true);/frm.setVisible(true);/將窗口顯示出來(lái)將窗口顯示出來(lái) 圖形用戶界面13static class WindowClose extends Windo
15、wAdapterstatic class WindowClose extends WindowAdapterpublic void windowClosing(WindowEvent e)public void windowClosing(WindowEvent e)System.exit(0);System.exit(0);圖形用戶界面14面面板板類類PanelPanel是是容容器器類類的的直直接接子子類類,是是一一種種沒沒有有標(biāo)標(biāo)題題的的容容器器,并并且且實(shí)實(shí)例例化化后后必必須須使使用用ContainerContainer類類的的add()add()方方法法裝入到窗口對(duì)象中。裝入到窗口對(duì)象
16、中。PanelPanel類具有如下特點(diǎn):類具有如下特點(diǎn):它不是頂層類,它必須位于窗口或其他容器之內(nèi)它不是頂層類,它必須位于窗口或其他容器之內(nèi)它它提提供供可可以以容容納納其其他他組組件件的的支支持持,在在程程序序中中經(jīng)經(jīng)常常用用于于布局和定位布局和定位它可以采用和所在容器不同的布局管理器它可以采用和所在容器不同的布局管理器l面板類面板類PanelPanel的應(yīng)用的應(yīng)用圖形用戶界面15例例9.2:在框架窗口中加入:在框架窗口中加入panel。/app9_2.java/app9_2.javaimport java.awt.*;/import java.awt.*;/加載加載java.awtjava.
17、awt類庫(kù)里的所有類類庫(kù)里的所有類import java.awt.event.*;import java.awt.event.*;public class app9_2public class app9_2 public static void main(String args)public static void main(String args)Frame frm=new Frame(“Frame frm=new Frame(“我的框架我的框架”););frm.setSize(300,200);frm.setSize(300,200);frm.setLocation(500,400);fr
18、m.setLocation(500,400);frm.setBackground(Color.lightGray);frm.setBackground(Color.lightGray);Panel pan=new Panel();Panel pan=new Panel();pan.setSize(150,100);pan.setSize(150,100);pan.setLocation(50,50);pan.setLocation(50,50);pan.setBackground(Color.green);pan.setBackground(Color.green);圖形用戶界面16 Butt
19、on bun=new Button(“Button bun=new Button(“點(diǎn)擊我點(diǎn)擊我”););bun.setSize(80,20);bun.setSize(80,20);bun.setLocation(50,50);bun.setLocation(50,50);bun.setBackground(Color.yellow);bun.setBackground(Color.yellow);frm.frm.setLayoutsetLayout(null);/(null);/取消取消frmfrm的默認(rèn)布局管理器的默認(rèn)布局管理器 pan.pan.setLayoutsetLayout(nul
20、l);/(null);/取消取消panpan的默認(rèn)布局管理器的默認(rèn)布局管理器 pan.pan.addadd(bun);/(bun);/將命令按鈕加入到面板中將命令按鈕加入到面板中 frm.frm.addadd(pan);/(pan);/將面板加入到窗口中將面板加入到窗口中 frm.addWindowListener(new WindowClose();frm.addWindowListener(new WindowClose();frm.setVisible(true);frm.setVisible(true);static class WindowClose extends WindowAd
21、apterstatic class WindowClose extends WindowAdapter public void windowClosing(WindowEvent e)public void windowClosing(WindowEvent e)System.exit(0);System.exit(0);圖形用戶界面17非容器類非容器類非容器類組件,又稱為控制組件,簡(jiǎn)稱控件。非容器類組件,又稱為控制組件,簡(jiǎn)稱控件。與容器不同,它里面不能再包含其他組件。與容器不同,它里面不能再包含其他組件。常用的控件常用的控件:命令類命令類 按鈕按鈕ButtonButton選擇類選擇類 單選按
22、鈕單選按鈕CheckboxGroupCheckboxGroup、復(fù)選框、復(fù)選框CheckboxCheckbox、列表框、列表框ListList、下拉列表框、下拉列表框ChoiceChoice文字處理類文字處理類 文本框文本框TextFieldTextField、文本區(qū)域、文本區(qū)域TextAreaTextArea圖形用戶界面18顏色類與字體類顏色類與字體類顏色類顏色類ColorColor是是java.awtjava.awt類庫(kù)里常用的類之一,類庫(kù)里常用的類之一,在在JavaJava中每一種顏色都看成是由紅中每一種顏色都看成是由紅(R)(R)、綠、綠(G)(G)、藍(lán)、藍(lán)(B)(B)三原色組成。三原
23、色組成。ColorColor類的構(gòu)造方法采用如下格式:類的構(gòu)造方法采用如下格式:Color(int r,int g,int b)Color(int r,int g,int b)每個(gè)參數(shù)的取值都在每個(gè)參數(shù)的取值都在0 0到到255255之間,數(shù)值越大表之間,數(shù)值越大表明這種顏色的成分越重。明這種顏色的成分越重。圖形用戶界面19Color類中還定義了一些標(biāo)準(zhǔn)的Color對(duì)象存儲(chǔ)在類變量中,使得對(duì)這些標(biāo)準(zhǔn)顏色的引用更加方便。變量名變量名代表顏色代表顏色black或或BLACK黑色黑色blue或或BLUE藍(lán)色藍(lán)色cyan或或CYAN藍(lán)紫色藍(lán)紫色darkGray或或DARKGRAY深灰色深灰色gray或
24、或GRAY灰色灰色lightGray或或LIGHTGRAY淺灰色淺灰色green或或GREEN綠色綠色magenta或或MAGENTA紅紫色紅紫色orange或或ORANGE橘紅色橘紅色pink或或PINK粉紅色粉紅色red或或RED紅色紅色white或或WHITE白色白色yellow或或YELLOW黃色黃色圖形用戶界面20FontFont類是用來(lái)規(guī)范組件所用的字體樣式、大小與字形等。許類是用來(lái)規(guī)范組件所用的字體樣式、大小與字形等。許多方法都需要將多方法都需要將FontFont類所創(chuàng)建的對(duì)象當(dāng)成它的參數(shù),用以設(shè)置組類所創(chuàng)建的對(duì)象當(dāng)成它的參數(shù),用以設(shè)置組件的字體。要?jiǎng)?chuàng)建字體類對(duì)象,可以使用字體類
25、的構(gòu)造方法,其件的字體。要?jiǎng)?chuàng)建字體類對(duì)象,可以使用字體類的構(gòu)造方法,其格式如下:格式如下:Font(String font_name,int style,int size)Font(String font_name,int style,int size)font_namefont_name表示表示-字體名稱??梢允亲煮w外觀名稱或字體系列字體名稱??梢允亲煮w外觀名稱或字體系列名稱,并可表示此名稱,并可表示此 GraphicsEnvironment 中找到的邏輯字體或中找到的邏輯字體或物理字體。邏輯字體的系列名稱有:物理字體。邏輯字體的系列名稱有:Dialog、DialogInput、Monosp
26、aced、Serif 或或 SansSerif。如果。如果 name 為為 null,則將,則將新新 Font 的的 邏輯字體名稱(由邏輯字體名稱(由 getName()返回)設(shè)置為返回)設(shè)置為 Default。stylestyle表示字形的樣式表示字形的樣式常量常量,樣式參數(shù)是整數(shù)位掩碼,樣式參數(shù)是整數(shù)位掩碼,可以設(shè)可以設(shè)置為置為Font.PLAIN(Font.PLAIN(一般一般)、Font.BOLD(Font.BOLD(粗體粗體)、Font.ITALIC(Font.ITALIC(斜體斜體)。如想同時(shí)設(shè)置為粗體與斜體可用語(yǔ)句。如想同時(shí)設(shè)置為粗體與斜體可用語(yǔ)句Font.BOLD+Font.I
27、TALICFont.BOLD+Font.ITALIC來(lái)實(shí)現(xiàn)。來(lái)實(shí)現(xiàn)。圖形用戶界面21組件組件有了窗口之后,還要?jiǎng)?chuàng)建其他組件,然后將其有了窗口之后,還要?jiǎng)?chuàng)建其他組件,然后將其添加到窗口中:添加到窗口中:標(biāo)簽標(biāo)簽按鈕按鈕文本編輯組件文本編輯組件復(fù)選框組件復(fù)選框組件圖形用戶界面22創(chuàng)建標(biāo)簽創(chuàng)建標(biāo)簽標(biāo)簽標(biāo)簽labellabel是用來(lái)在窗口中顯示文字的控件,它可用是用來(lái)在窗口中顯示文字的控件,它可用java.awtjava.awt類庫(kù)里的類庫(kù)里的LabelLabel類創(chuàng)建。類創(chuàng)建。LabelLabel類常用方法如下:類常用方法如下:注意:上表中,標(biāo)簽的對(duì)齊方式或注意:上表中,標(biāo)簽的對(duì)齊方式或align的
28、值可以為的值可以為L(zhǎng)abel.LEFT、Label.RIGHT、Label.CENTER,分別表示靠左、靠右和居中對(duì)齊。,分別表示靠左、靠右和居中對(duì)齊。方方 法法功能說(shuō)明功能說(shuō)明public Label()創(chuàng)建一個(gè)沒有文字的標(biāo)簽創(chuàng)建一個(gè)沒有文字的標(biāo)簽public Label(String text)創(chuàng)建標(biāo)簽,并以創(chuàng)建標(biāo)簽,并以text為該標(biāo)簽上的文字為該標(biāo)簽上的文字public Label(String text,int align)創(chuàng)建標(biāo)簽,以創(chuàng)建標(biāo)簽,以text為該標(biāo)簽上的文字,為該標(biāo)簽上的文字,并以并以align的方式對(duì)齊的方式對(duì)齊public int getAlignment()返回標(biāo)
29、簽上文字的對(duì)齊方式返回標(biāo)簽上文字的對(duì)齊方式public void setAlignment(int align)設(shè)置標(biāo)簽上文字的對(duì)齊方式設(shè)置標(biāo)簽上文字的對(duì)齊方式publilc String getText()返回標(biāo)簽上顯示的文字返回標(biāo)簽上顯示的文字public void setText(String text)將標(biāo)簽上的文字設(shè)置為將標(biāo)簽上的文字設(shè)置為text圖形用戶界面23例例9.39.3:在框架窗口中加入指定大小的標(biāo)簽。:在框架窗口中加入指定大小的標(biāo)簽。/app9_3.java /app9_3.java 指定標(biāo)簽對(duì)象的大小指定標(biāo)簽對(duì)象的大小import java.awt.*;import j
30、ava.awt.*;import java.awt.event.*;import java.awt.event.*;public class app9_3public class app9_3static Frame frm=new Frame(static Frame frm=new Frame(“標(biāo)簽類窗口標(biāo)簽類窗口”););static Label lab=new Label();/static Label lab=new Label();/創(chuàng)建標(biāo)簽對(duì)象創(chuàng)建標(biāo)簽對(duì)象public static void main(String args)public static void main(St
31、ring args)frm.setLayout(null);frm.setLayout(null);/取消頁(yè)面設(shè)置,無(wú)該句效果如何?取消頁(yè)面設(shè)置,無(wú)該句效果如何?f frm.setSize(300,200);rm.setSize(300,200);frm.setBackground(Color.pinkfrm.setBackground(Color.pink);/);/設(shè)置窗口底色為粉紅色設(shè)置窗口底色為粉紅色lab.setText(lab.setText(“我是一個(gè)標(biāo)簽我是一個(gè)標(biāo)簽”););/設(shè)置標(biāo)簽顯示的文字設(shè)置標(biāo)簽顯示的文字lab.setAlignment(Label.CENTER);la
32、b.setAlignment(Label.CENTER);/將標(biāo)簽文字居中將標(biāo)簽文字居中 lab.setBackground(Color.yellow);lab.setBackground(Color.yellow);/設(shè)置標(biāo)簽底色為黃色設(shè)置標(biāo)簽底色為黃色lab.setForeground(Color.red);lab.setForeground(Color.red);/設(shè)置標(biāo)簽上文字為紅色設(shè)置標(biāo)簽上文字為紅色lab.setLocation(120,90);lab.setLocation(120,90);/設(shè)置標(biāo)簽位置設(shè)置標(biāo)簽位置圖形用戶界面24lab.setSize(130,30);lab.
33、setSize(130,30);Font fnt=new Font fnt=new Font(Font(“SeriefSerief”,Font.BOLD+Font.ITALIC,20);,Font.BOLD+Font.ITALIC,20);lab.setFont(fnt);/lab.setFont(fnt);/設(shè)置標(biāo)簽上字體的樣式設(shè)置標(biāo)簽上字體的樣式frm.add(lab);/frm.add(lab);/將標(biāo)簽加入到窗口中將標(biāo)簽加入到窗口中frm.addWindowListener(new WindowClose();frm.addWindowListener(new WindowClose(
34、);frm.setVisible(true);frm.setVisible(true);static class WindowClose extends WindowAdapterstatic class WindowClose extends WindowAdapter public void windowClosing(WindowEvent e)System.exit(0);public void windowClosing(WindowEvent e)System.exit(0);圖形用戶界面25創(chuàng)建命令按鈕創(chuàng)建命令按鈕命令按鈕命令按鈕(Button)(Button)是窗口程序設(shè)計(jì)中最
35、常用的是窗口程序設(shè)計(jì)中最常用的一種控件之一,用戶可以按下它來(lái)控制程序運(yùn)行的一種控件之一,用戶可以按下它來(lái)控制程序運(yùn)行的流程。流程。java.awtjava.awt類庫(kù)提供了類庫(kù)提供了ButtonButton類,用來(lái)處理按類,用來(lái)處理按鈕控件的相關(guān)操作。按鈕創(chuàng)建之后通過(guò)容器的鈕控件的相關(guān)操作。按鈕創(chuàng)建之后通過(guò)容器的add()add()方法將其放入到容器中。方法將其放入到容器中。ButtonButton類常用方法如下:類常用方法如下:方方 法法功能說(shuō)明功能說(shuō)明public Button()創(chuàng)建一個(gè)沒有標(biāo)題的按鈕創(chuàng)建一個(gè)沒有標(biāo)題的按鈕public Button(String label)創(chuàng)建一個(gè)以創(chuàng)
36、建一個(gè)以label為標(biāo)題的按鈕為標(biāo)題的按鈕public String getLabel()返回按鈕上的標(biāo)題返回按鈕上的標(biāo)題public void setLabel(String label)設(shè)置按鈕上的標(biāo)題為設(shè)置按鈕上的標(biāo)題為label圖形用戶界面26例例9.49.4:在框架窗口中加入按鈕:在框架窗口中加入按鈕import java.awt.*;import java.awt.*;import java.awt.event.*;import java.awt.event.*;public class app9_4 extends Frame/public class app9_4 extend
37、s Frame/指定指定app9_4app9_4繼承自繼承自FrameFrame類類 public static void main(String args)public static void main(String args)app9_4 frm=new app9_4();/app9_4 frm=new app9_4();/用用app9_4app9_4類創(chuàng)建類創(chuàng)建frmfrm對(duì)象對(duì)象 Button btn=new Button(Button btn=new Button(確定確定);/);/創(chuàng)建按鈕對(duì)象創(chuàng)建按鈕對(duì)象 frm.setLayout(null);/frm.setLayout(nu
38、ll);/取消頁(yè)面設(shè)置取消頁(yè)面設(shè)置 frm.setSize(220,150);frm.setSize(220,150);frm.setTitle(frm.setTitle(按鈕類窗口按鈕類窗口););btn.setBounds(50,70,100,40);/btn.setBounds(50,70,100,40);/設(shè)置按鈕的大小與位置設(shè)置按鈕的大小與位置 frm.add(btn);frm.add(btn);frm.addWindowListener(new WindowClose();frm.addWindowListener(new WindowClose();frm.setVisible(
39、true);frm.setVisible(true);static class WindowClose extends WindowAdapter static class WindowClose extends WindowAdapter public void windowClosing(WindowEvent e)System.exit(0);public void windowClosing(WindowEvent e)System.exit(0);圖形用戶界面27創(chuàng)建文本編輯組件創(chuàng)建文本編輯組件文本編輯組件是可以接收用戶的文本輸入并具有一定編文本編輯組件是可以接收用戶的文本輸入并具有
40、一定編輯功能的界面元素。輯功能的界面元素。文本編輯組件分為兩種,一種是單行文本編輯組件,簡(jiǎn)文本編輯組件分為兩種,一種是單行文本編輯組件,簡(jiǎn)稱文本框稱文本框TextFieldTextField,另一種是多行文本編輯組件,簡(jiǎn)稱文本,另一種是多行文本編輯組件,簡(jiǎn)稱文本區(qū)區(qū)TextAreaTextArea。文本框中只有一行文本,即使文本的內(nèi)容超出。文本框中只有一行文本,即使文本的內(nèi)容超出了文本框的寬度也不會(huì)折行;而文本區(qū)可以實(shí)現(xiàn)多行文本的了文本框的寬度也不會(huì)折行;而文本區(qū)可以實(shí)現(xiàn)多行文本的輸入,且可以自動(dòng)折行。輸入,且可以自動(dòng)折行。圖形用戶界面28TextFieldTextField類和類和TextA
41、reaTextArea類都是類都是java.awt.TextComponentjava.awt.TextComponent類的子類,類的子類,TextComponentTextComponent類里提供了許多常用的方法給類里提供了許多常用的方法給TextFieldTextField類和類和TextAreaTextArea類使用,具體如下:類使用,具體如下:方方 法法功能說(shuō)明功能說(shuō)明public Color getBackground()返回背景顏色返回背景顏色public void setBackground(Color c)設(shè)置背景顏色設(shè)置背景顏色public String getText(
42、)返回文本組件里的文本返回文本組件里的文本public void select(int selStart,int selEnd)選擇位置為選擇位置為selStart與與selEnd之間之間的文本的文本public void selectAll()選擇文本組件里的所有文本選擇文本組件里的所有文本public String getSelectedText()返回被選中的文本返回被選中的文本public boolean isEditable()測(cè)試文本組件中的文本可否被編輯測(cè)試文本組件中的文本可否被編輯public void setEditable(boolean b)設(shè)置文本組件中的文本可否被編輯
43、設(shè)置文本組件中的文本可否被編輯圖形用戶界面29創(chuàng)建文本框文本框是一個(gè)能夠接收用戶通過(guò)鍵盤輸入的文本的一小塊區(qū)域。Java語(yǔ)言用TextField類來(lái)創(chuàng)建文本框,其常用方法如下:方方 法法功能說(shuō)明功能說(shuō)明public TextField()創(chuàng)建文本框創(chuàng)建文本框public TextField(int columns)創(chuàng)建可以容納創(chuàng)建可以容納columns個(gè)字符的文本框個(gè)字符的文本框public TextField(String text)創(chuàng)建以創(chuàng)建以text為默認(rèn)文本的文本框?yàn)槟J(rèn)文本的文本框public TextField(String text,int columns)創(chuàng)建以創(chuàng)建以text為
44、默認(rèn)文本為默認(rèn)文本,可以容納可以容納columns個(gè)字符的文本框個(gè)字符的文本框public int getColumns()返回文本框默認(rèn)的寬度,以字符為單位返回文本框默認(rèn)的寬度,以字符為單位public void setColumns(int columns)設(shè)置文本框的寬度為設(shè)置文本框的寬度為columns個(gè)字符個(gè)字符public void setEchoCharacter(char c)設(shè)置文本框的回顯字符設(shè)置文本框的回顯字符public void setText(String text)設(shè)置文本框的字符為設(shè)置文本框的字符為text圖形用戶界面30創(chuàng)建文本區(qū)文本區(qū)實(shí)際上是多行文本輸入框,
45、因?yàn)槲谋究蛑荒茌斎胍恍形淖?,所以在需要輸入和顯示較多的文字時(shí),就可以使用文本區(qū)。文本區(qū)是由TextArea類來(lái)實(shí)現(xiàn)的。下面是TextArea類的數(shù)據(jù)成員和常用方法。注意:如果將文本區(qū)設(shè)置為具有水平滾動(dòng)條的話,則文本區(qū)的自動(dòng)換行功能便會(huì)被自動(dòng)取消。數(shù)據(jù)成員數(shù)據(jù)成員功能說(shuō)明功能說(shuō)明public SCROLLBARS_BOTH設(shè)置文本區(qū)具有垂直與水平滾動(dòng)條設(shè)置文本區(qū)具有垂直與水平滾動(dòng)條public SCROLLBARS_HORIZONTAL_ONLY設(shè)置文本區(qū)只具有水平滾動(dòng)條設(shè)置文本區(qū)只具有水平滾動(dòng)條public SCROLLBARS_VERTICAL_ONLY設(shè)置文本區(qū)只具有垂直滾動(dòng)條設(shè)置文本區(qū)只
46、具有垂直滾動(dòng)條public SCROLLBARS_NONE設(shè)置文本區(qū)沒有滾動(dòng)條設(shè)置文本區(qū)沒有滾動(dòng)條圖形用戶界面31方方 法法功能說(shuō)明功能說(shuō)明public TextArea()創(chuàng)建一個(gè)文本區(qū)創(chuàng)建一個(gè)文本區(qū)public TextArea(int rows,int cols)創(chuàng)建一個(gè)創(chuàng)建一個(gè)rows行行cols列的文本區(qū)列的文本區(qū)public TextArea(String text)創(chuàng)建一個(gè)默認(rèn)文本為創(chuàng)建一個(gè)默認(rèn)文本為text的文本區(qū)的文本區(qū)public TextArea(String text,int rows,int cols)創(chuàng)建一個(gè)創(chuàng)建一個(gè)rows行行cols列默認(rèn)文本為列默認(rèn)文本為tex
47、t的文本區(qū)的文本區(qū)public TextArea(String text,int rows,int cols,int scrollbars)創(chuàng)建一個(gè)創(chuàng)建一個(gè)rows行行cols列默認(rèn)文本為列默認(rèn)文本為text并加上滾動(dòng)條的文本區(qū)并加上滾動(dòng)條的文本區(qū)public void setText(String txt)設(shè)置文本區(qū)內(nèi)的文字為設(shè)置文本區(qū)內(nèi)的文字為txtpublic void insertText(String str,int pos)在文本區(qū)的在文本區(qū)的pos位置插入字符串位置插入字符串strpublic void replaceText(String str,int start,int e
48、nd)將文本區(qū)內(nèi)從將文本區(qū)內(nèi)從start開始到開始到end結(jié)束的字結(jié)束的字符串用符串用str替換替換public int getRows()返回文本區(qū)的行數(shù)返回文本區(qū)的行數(shù)public void setRows(int rows)設(shè)置文本區(qū)可顯示的行數(shù)為設(shè)置文本區(qū)可顯示的行數(shù)為rowspublic int getColumns()返回文本區(qū)的列數(shù)返回文本區(qū)的列數(shù)public void setColumns(int columns)設(shè)置文本區(qū)可顯示的列數(shù)為設(shè)置文本區(qū)可顯示的列數(shù)為columnspublic int getScrollbarVisibility()返回滾動(dòng)條的顯示狀態(tài)返回滾動(dòng)條的顯
49、示狀態(tài)圖形用戶界面32例例9.59.5:在框架窗口中加入文本編輯框:在框架窗口中加入文本編輯框import java.awt.*;import java.awt.*;import java.awt.event.*;import java.awt.event.*;public class app9_5 extends Framepublic class app9_5 extends Frame TextField tf1=new TextField(TextField tf1=new TextField(該文本不可編輯該文本不可編輯,20);,20);static TextField tf2=n
50、ew TextField(static TextField tf2=new TextField(口令輸入口令輸入,20);,20);public app9_5(String str)/public app9_5(String str)/構(gòu)造方法構(gòu)造方法 super(str);/super(str);/調(diào)用父類調(diào)用父類FrameFrame的構(gòu)造方法的構(gòu)造方法 tf1.setBounds(20,60,120,20);tf1.setBounds(20,60,120,20);tf1.setEditable(false);/tf1.setEditable(false);/設(shè)置文本框?qū)ο笤O(shè)置文本框?qū)ο髏f
51、1tf1為不可編輯為不可編輯 add(tf1);/add(tf1);/將文本框?qū)ο蠹尤氲酱翱谥袑⑽谋究驅(qū)ο蠹尤氲酱翱谥?static class WindowClose extends WindowAdapter static class WindowClose extends WindowAdapter public void windowClosing(WindowEvent e)public void windowClosing(WindowEvent e)System.exit(0);System.exit(0);圖形用戶界面33public static void main(Stri
52、ng args)public static void main(String args)app9_5 frm=new app9_5(app9_5 frm=new app9_5(文本編輯功能文本編輯功能);/);/調(diào)用主類構(gòu)造方法調(diào)用主類構(gòu)造方法TextArea ta=new TextArea(TextArea ta=new TextArea(“您好您好”,10,20,TextArea.SCROLLBARS_VERTICAL_ONLY);10,20,TextArea.SCROLLBARS_VERTICAL_ONLY);frm.setLocation(200,150);frm.setLocatio
53、n(200,150);frm.setSize(200,150);frm.setSize(200,150);frm.setLayout(null);/frm.setLayout(null);/取消頁(yè)面設(shè)置取消頁(yè)面設(shè)置tf2.setBounds(20,30,120,20);tf2.setBounds(20,30,120,20);tf2.setEchoChar(*);/tf2.setEchoChar(*);/設(shè)置文本框?qū)ο蟮脑O(shè)置文本框?qū)ο蟮膖f2tf2的回顯字符為的回顯字符為*ta.setBounds(20,90,140,100);ta.setBounds(20,90,140,100);frm.ad
54、d(tf2);frm.add(tf2);frm.add(ta);frm.add(ta);System.out.println(tf2.getText();System.out.println(tf2.getText();frm.addWindowListener(new WindowClose();frm.addWindowListener(new WindowClose();frm.setVisible(true);frm.setVisible(true);說(shuō)明:說(shuō)明:getText()getText()是是TextFieldTextField類繼承自類繼承自TextComponentTex
55、tComponent而來(lái)的方法而來(lái)的方法圖形用戶界面34創(chuàng)建復(fù)選框組件創(chuàng)建復(fù)選框組件復(fù)選框復(fù)選框(Checkbox)(Checkbox)是讓用戶選取項(xiàng)目的一種組件,用是讓用戶選取項(xiàng)目的一種組件,用戶利用該組件來(lái)獲得相應(yīng)的輸入。它具有狀態(tài)屬性,用戶可戶利用該組件來(lái)獲得相應(yīng)的輸入。它具有狀態(tài)屬性,用戶可以通過(guò)鼠標(biāo)單擊操作來(lái)設(shè)置其狀態(tài)為以通過(guò)鼠標(biāo)單擊操作來(lái)設(shè)置其狀態(tài)為“選中選中(on)(on)”或或“非選非選中中(off)(off)”。JavaJava語(yǔ)言提供了語(yǔ)言提供了CheckboxCheckbox類來(lái)創(chuàng)建復(fù)選框。復(fù)類來(lái)創(chuàng)建復(fù)選框。復(fù)選框分為復(fù)選和單選兩種,其中復(fù)選選框分為復(fù)選和單選兩種,其中復(fù)
56、選CheckboxCheckbox可以單獨(dú)使用,可以單獨(dú)使用,而單選框還必須配合而單選框還必須配合CheckboxGroupCheckboxGroup類將其組成組來(lái)使用,類將其組成組來(lái)使用,在這種情況下,在在這種情況下,在CheckboxGroupCheckboxGroup類管轄的所有類管轄的所有CheckboxCheckbox類類中,只能有一個(gè)中,只能有一個(gè)CheckboxCheckbox組件處于組件處于onon狀態(tài)。狀態(tài)。圖形用戶界面35復(fù)選框復(fù)選框(Checkbox)(Checkbox)常用的方法如下:常用的方法如下:方方 法法功能說(shuō)明功能說(shuō)明public Checkbox()創(chuàng)建一個(gè)沒
57、有文字顯示的復(fù)選框創(chuàng)建一個(gè)沒有文字顯示的復(fù)選框public Checkbox(String label)創(chuàng)建一個(gè)以創(chuàng)建一個(gè)以label為標(biāo)簽的復(fù)選框?yàn)闃?biāo)簽的復(fù)選框public Checkbox(String label,boolean state)創(chuàng)建一個(gè)以創(chuàng)建一個(gè)以label為標(biāo)簽,狀態(tài)為為標(biāo)簽,狀態(tài)為state的的復(fù)選框,若復(fù)選框,若state為為true則表示其被選中則表示其被選中public Checkbox(String label,boolean state,CheckboxGroup grp)創(chuàng)建一個(gè)以創(chuàng)建一個(gè)以label為標(biāo)簽,狀態(tài)為為標(biāo)簽,狀態(tài)為state的的復(fù)選框,并將其加
58、入到復(fù)選框組復(fù)選框,并將其加入到復(fù)選框組grp中中public boolean getState()返回復(fù)選框被選中與否的狀態(tài)返回復(fù)選框被選中與否的狀態(tài)public void setState(boolean state)設(shè)置復(fù)選框被選中與否的狀態(tài)設(shè)置復(fù)選框被選中與否的狀態(tài)public String getLabel()返回復(fù)選框上顯示的文字標(biāo)簽返回復(fù)選框上顯示的文字標(biāo)簽public void setLabel(String label)設(shè)置復(fù)選框上顯示的文字標(biāo)簽為設(shè)置復(fù)選框上顯示的文字標(biāo)簽為labelpublic CheckboxGroup getCheckboxGroup()返回復(fù)選框所屬
59、的組返回復(fù)選框所屬的組public void setCheckboxGroup(CheckboxGroup grp)設(shè)置復(fù)選框?qū)儆谠O(shè)置復(fù)選框?qū)儆趃rp組組圖形用戶界面36例例9.69.6:在框架窗口中加入單選框和復(fù)選框。:在框架窗口中加入單選框和復(fù)選框。import java.awt.*;import java.awt.*;import java.awt.event.*;import java.awt.event.*;public class app9_6 extends Framepublic class app9_6 extends Framestatic Frame frm=new Fr
60、ame(static Frame frm=new Frame(復(fù)選框和單選按鈕組選取框復(fù)選框和單選按鈕組選取框););static Checkbox chk1=new Checkbox(static Checkbox chk1=new Checkbox(粗體粗體,true);,true);/設(shè)置設(shè)置chk1chk1選中狀態(tài)選中狀態(tài)static Checkbox chk2=new Checkbox(static Checkbox chk2=new Checkbox(斜體斜體););static Checkbox chk3=new Checkbox(static Checkbox chk3=new
61、 Checkbox(下劃線下劃線););static Checkbox chk_g1=new Checkbox(static Checkbox chk_g1=new Checkbox(紅色紅色););static Checkbox chk_g2=new Checkbox(static Checkbox chk_g2=new Checkbox(綠色綠色,true);,true);/設(shè)置設(shè)置chk_g2chk_g2選中狀態(tài)選中狀態(tài) static Checkbox chk_g3=new Checkbox(static Checkbox chk_g3=new Checkbox(藍(lán)色藍(lán)色););publ
62、ic static void main(String args)public static void main(String args)CheckboxGroup grp=new CheckboxGroup();CheckboxGroup grp=new CheckboxGroup();/創(chuàng)建一個(gè)單選按鈕組對(duì)象創(chuàng)建一個(gè)單選按鈕組對(duì)象frm.setLocation(200,150);frm.setLocation(200,150);frm.setSize(250,220);frm.setSize(250,220);frm.setLayout(null);frm.setLayout(null);/
63、取消頁(yè)面設(shè)置取消頁(yè)面設(shè)置圖形用戶界面37chk1.setBounds(20,30,120,20);chk1.setBounds(20,30,120,20);/設(shè)置復(fù)選框的位置和大小設(shè)置復(fù)選框的位置和大小chk2.setBounds(20,50,120,20);/chk2.setBounds(20,50,120,20);/繼承自繼承自ComponentComponent類類chk3.setBounds(20,70,120,20);chk3.setBounds(20,70,120,20);chk_g1.setBounds(20,90,120,20);chk_g1.setBounds(20,90,1
64、20,20);chk_g2.setBounds(20,110,120,20);chk_g2.setBounds(20,110,120,20);chk_g3.setBounds(20,130,120,20);chk_g3.setBounds(20,130,120,20);chk_g1.setCheckboxGroup(grp);chk_g1.setCheckboxGroup(grp);chk_g2.setCheckboxGroup(grp);chk_g2.setCheckboxGroup(grp);chk_g3.setCheckboxGroup(grp);chk_g3.setCheckboxGr
65、oup(grp);frm.add(chk1);frm.add(chk1);frm.add(chk2);frm.add(chk2);frm.add(chk3);frm.add(chk3);frm.add(chk_g1);frm.add(chk_g1);frm.add(chk_g2);frm.add(chk_g2);frm.add(chk_g3);frm.add(chk_g3);frm.addWindowListener(new WindowClose();frm.addWindowListener(new WindowClose();frm.setVisible(true);frm.setVis
66、ible(true);圖形用戶界面38static class WindowClose extends WindowAdapterstatic class WindowClose extends WindowAdapter public void windowClosing(WindowEvent e)public void windowClosing(WindowEvent e)System.exit(0);System.exit(0);圖形用戶界面39圖形用戶界面的構(gòu)成容器:布局、安排標(biāo)準(zhǔn)組件用戶自定義成分設(shè)計(jì)&實(shí)現(xiàn)圖形用戶界面的工作創(chuàng)建GUI各組成成分,并安排從屬位置關(guān)系,根據(jù)具體需要對(duì)其進(jìn)行排序,構(gòu)成完整外觀。定義GUI各成分對(duì)不同事件的響應(yīng),實(shí)現(xiàn)與用戶的交互功能。2.窗口的基本原理圖形用戶界面40界面構(gòu)成容器用戶自定義成分v容器是用來(lái)組織其他界面成分和元素的單元。一般容器是用來(lái)組織其他界面成分和元素的單元。一般一個(gè)圖形用戶界面對(duì)應(yīng)一個(gè)復(fù)雜容器,如窗口。一個(gè)圖形用戶界面對(duì)應(yīng)一個(gè)復(fù)雜容器,如窗口。v標(biāo)準(zhǔn)組件是圖形用戶界面的最小單位,它里面不再標(biāo)準(zhǔn)組件是圖形用戶界面的最小單位,它里
- 溫馨提示:
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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案