




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、GUI and Event1、使用AWT(Abstract Window Toolkit)組件2、包含組件的組件組件容器(Container) 3、外觀的管理與控制4、事件與事件處理5、AWT中的各種組件6、組件的應(yīng)用實(shí)例使用AWT(Abstract Window Toolkit)組件通過圖形用戶界面(Graphical Usererface,GUI),用戶和程序之間可以方便友好地進(jìn)行交互。在Java語言中,Java的基礎(chǔ)類(Java Foundation Classed,JFC)是開發(fā)GUI的API集,它包括以下幾個(gè)部分:抽象窗口工具包(AWT):Java開發(fā)用戶界面最初的工具包,是建立JF
2、C的主要基礎(chǔ);2D API:實(shí)現(xiàn)高質(zhì)量的二維圖形;Swing組件:建立在AWT之上,新的、功能更強(qiáng)大的圖形組件包;可API:支持殘疾用戶的交互;使用AWTjava.awt包中包含了一個(gè)完整的類集以支持GUI程序的設(shè)計(jì),其中的類及相互關(guān)系可以用下圖來描述:java.lang.ObjectComponent布局管理類ButtonCheckboxListContainerWindonelFrameDialogApplet字體類菜單類圖象類顏色類Graphics事件類使用AWTComponent類ponent類,它是包中最的類就是Java圖形用戶界面的基礎(chǔ),大部分組件都是由該類派生出來的。 Compo
3、nent類是一個(gè)抽象類,其中定義了組件所具有的一般功能:基本的繪畫支持(p , update等)、, rep 字體和顏色等外形控制(setFont, SetForeground等)、大小和位置控制(SetSize, SetLocation等)、圖象處理(實(shí)現(xiàn)接口 ImageObserver)以及組件狀態(tài)控制(SetEnable, isEnable, isVisible, isValid等) ,。常見的組件包括:Button, Checkbox, CheckboxGroup,Choice, Label, List, Canvas,ponent, Scrollbar等。使用AWT使用AWT菜單類菜
4、單類也是一種組件,只不過菜單類并不是由一般的Component類派生的,而是從得到的。ponent類繼承使用AWTContainer類ponent類派生出來的一種特殊類是由類,用來表示各種GUI組件的容器,其主要功能包括:組件的管理:方法add()可以向其中添加一個(gè)組件,remove()刪除其中的一個(gè)組件,布局管理:每個(gè)Container類都和一個(gè)布局管理器相聯(lián),以確定其中組件的布局。 Container類可以通過 setLayout()方法設(shè)置某種布局方式。常見的Container類有:Frame,Dialog,Panel, Applet等。使用AWT布局管理器類Java中提供了各種布局管理
5、器類來管理各種組件在容器中的放置狀態(tài),這些類都是實(shí)現(xiàn)了LayoutManager接口的。標(biāo)準(zhǔn)的布局管理器類有:FlowLayoutBorderLayoutGridLayoutCardLayoutGridBagLayout還可以通過實(shí)現(xiàn)LayoutManager接口來定義自己的布局管理器。使用AWTGraphics類Graphics類是所有用來在組件上進(jìn)行圖形繪制時(shí)所使用的圖形環(huán)境上下文的父類,它提供了對組件進(jìn)行圖形繪制的一般方法的接口,一個(gè)Graphics對象中封裝了用來進(jìn)行圖形繪制時(shí)必須得狀態(tài)信息,包括:要繪制的組件對象當(dāng)前顏色當(dāng)前字體當(dāng)前邏輯點(diǎn)操作的功能(XOR和Pa當(dāng)前XOR方式的替代顏
6、色)使用AWTGraphics類還提供了一系列的方法來繪制幾何圖形、文字、圖象以及動畫:Lines:drawLine()Rectangles:drawRect(), fillRect() 和 clearRect()Raised or lowered rectangles:draw3DRect() 和 fill3DRect()Round-edged rectangles:drawRoundRect() 和 fillRoundRect()Ovals:drawOval() 和 fillOval()Arcs:drawArc() 和 fillArc()Polygons :drawPolygon() 和
7、fillPolygon()Text :drawString()Image :drawImage()Animation :通過一個(gè)循環(huán)來完成使用AWT事件類:描述各種事件的類,包括AWTEvent類及其子類、Event類。字體類:用來表示字體的類,通過它可以在GUI中使用多種系統(tǒng)支持的字體。圖象類:用來表示與處理圖象的類(GIF、JEPG)。顏色類:封裝了各種顏色。其他類:光標(biāo)類、各種幾何類等 使用AWT組件及其對等類(peers)java.awt.peer中有全部awt組件的對等對象的集合,每個(gè)對象都提供了機(jī)器相關(guān)基本的方法,awt中的組件使用這些方法來實(shí)現(xiàn)機(jī)器和操作系統(tǒng)無關(guān)的GUI。組件容器
8、一個(gè)Java的圖形用戶界面的最基本組成部分就是組件(Component),組件是一個(gè)可以以圖形化的方式顯示在 屏幕上并能與用戶進(jìn)行交互的對象,比如Button, Checkbox,Choice, Label, List等。組件不能獨(dú)立地顯示出來,必須將組件放在特定的對象中才能顯示出來,這就是包含組件的組件Containerponent的子類,它本身也(容器)。容器是是一個(gè)組件,具有組件所有的性質(zhì)。另外,它還具有容納其他組件和容器的功能。組件容器窗口,框Container另一個(gè)窗口Container組件容器ComponentContainerPanelButtonAppletListWindow
9、FrameTextfieldCheckboxFileDialog組件容器AWT使用Container類來定義最基本的組件容器,它有兩個(gè)常用的子類:Window類和Panel類。Window類還有兩個(gè)子類:定義框,用Dialog子類。Java還提了一個(gè)Dialog的子類FileDialog,用它生成文件框。定義一般意義的窗口,用Frame類。Frame可以用其構(gòu)造方法Fame(String)來生成,其標(biāo)題由 String參數(shù)指定。一個(gè)Frame剛被創(chuàng)建后,其初始大小為(0,0),而且是不可見的,所以為了使Frame顯示出來,必須在程序中顯式地設(shè)置一下它的大小。Demo:FrameDemo:Dia
10、logimport java.awt.*;public class myFrame extends Framepublic sic void main(String args)myFrame fr = new myFrame(Frame Test); fr.setSize(400,300); fr.setBackground(Color.white); fr.setVisible(true);fr.showDialog();public myFrame(String s)super(s);public void showDialog()Dialog fd = new Dialog(this,
11、Dialog Test,true); fd.setSize(100,100);fd.setBackground(Color.red); fd.setVisible(true);組件容器Panel可以使程序員更方便地組織自己的組件,得到賞心悅目的布局。Panel可以使用構(gòu)造方法Panel()生成,當(dāng)一個(gè)Panel對象被創(chuàng)建后,必須放在Window和Frame中才能可見。使用 add()方法就可以將Panel添加到其他容器中。Applet是Panel的子類,因此在小應(yīng)用程序里可以直接加入組件,而一般的應(yīng)用程序必須先定義組件容器。小應(yīng)用程序在瀏覽器中所顯示的區(qū)域就是Panel,所占的尺寸就是缺省的P
12、anel尺寸(瀏覽器本身也可以看作是一個(gè)容器)。組件容器框架(Frame)Frame是一個(gè)頂級窗口,通常是應(yīng)用程序的骨架。Frame中的退出按鈕被點(diǎn)擊后,將產(chǎn)生一個(gè)WindowEvent事件,表示關(guān)閉Frame,可以在Frame中實(shí)現(xiàn)WindowListener接口以WindowEvent事件。Frame中無法直接鍵盤事件,但可以往Frame中添加畫布、面板凳組件,讓它們來負(fù)責(zé)鍵盤事件。面板(Panel)面板可以處理事件,但象畫布一樣,一定要先獲得輸入焦點(diǎn)???Dialog)框與Frame相類似,一般用于接收用戶的輸入數(shù)據(jù),實(shí)現(xiàn)與用戶的交互。它與一般窗口的區(qū)別在于它依賴其他的窗口。框分有模式和
13、無模式兩種,前者只讓應(yīng)用程序響應(yīng)框事件,后者則可以響應(yīng)框以外的事件,可以通過其構(gòu)造方法來設(shè)置框是否有模式:Dialog( Parent, Title, isModal ) /父窗口,標(biāo)題,是否有模式組件容器文件框(FileDialog)框。可以用其getFile()方表示文件選擇的框,它是有模式的文件名。法來獲得要打開或要滾動窗口(ScrollPane)滾動窗口也是容器的一種,象Panel一樣,無法單單獨(dú)使用。使用滾動窗口可以查看大面積的區(qū)域,因?yàn)樗袧L動條。滾動窗口內(nèi)只能放一個(gè)組件,因此也無須布局管理器。通常是在滾動窗口中放一個(gè)面板,然后在面板中添加各種組件。滾動窗口中的事件一般由其中的組件
14、來管理。組件容器用戶可以從具體的容器中繼承來創(chuàng)建自己的容器,以構(gòu)造一些個(gè)性化的窗口。一般用戶通常要構(gòu)造一些適合自己需要的可以從Dialog中繼承。框,此時(shí),public class MyFrame extends Framepublic sic void main(String args)MyFrame fr = new MyFrame(Frame and FileDialog Test); fr.setSize(500,500);fr.setBackground(Color.blue);fr.setVisible(true);fr.showDialog();public MyFrame(St
15、ring str)super(str);addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0););public void showDialog()FileDialog fd = new FileDialog(this, FileDialog); fd.setVisible(true);public class MyPanelInFrame extends Framepublic MyPanelInFrame(String str)super(str);addWi
16、ndowListener( new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););public sic void main(String args)MyPanelInFrame fr = new MyPanelInFrame(Panel in Frame); Panel pan = nenel();fr.setSize(500,500); fr.setBackground(Colreen); fr.setLayout(null);pan.setSize(200,200); pan.setBackg
17、round(Color.yellow); pan.setLocation(100,100);Button b1 = new Button(Help); Button b2 = new Button(Test); pan.add(b1);pan.add(b2);fr.add(pan); fr.setVisible(true);AWT的組件組件的應(yīng)用步驟加入 addAWT的選擇組件按鈕(Button)可點(diǎn)擊的用戶界面組件,當(dāng)組件被點(diǎn)擊是,產(chǎn)生AcitonEvent事件,可以用ActionListener來。復(fù)選框(Checkbox)提供簡單的“on/off”開關(guān),同時(shí)旁邊還可以顯示說明信息。當(dāng)復(fù)選
18、框狀態(tài)發(fā)生變化時(shí),會產(chǎn)生ItemEvent事件,可以用ItemListener來復(fù)選框組(CheckboxGroup)單選框(Radio Button)當(dāng)多個(gè)復(fù)選框組成一組時(shí),就形成了單選框。復(fù)選框組中的復(fù)選框之間是相互關(guān)聯(lián)的,每次有且只有一個(gè)處于選中狀態(tài)。下拉式菜單(Choice)在下拉式菜單中有多個(gè)選項(xiàng),但每次只能選擇一項(xiàng)。當(dāng)選擇發(fā)生時(shí),。會產(chǎn)生ItemEvent事件,可以用ItemListener來。Demo:選擇組件/Checkboxpan.add( new Checkbox(one, null, true) ); pan.add( new Checkbox(two, null, fa
19、lse) ); pan.add( new Checkbox(three, null, false) );AWT的顯示組件(Label)靜態(tài)文字,多用于指示信息,無事件。單行文本區(qū)(TextField)ponent只能顯示一行信息,當(dāng)按回車鍵后,會產(chǎn)生ActionEvent事件,可以用ActionListener來。文本輸入?yún)^(qū)(TextArea) ponent可以顯示多行信息,并且有滾動條支持。按回車鍵后并不產(chǎn)生事件,如果要判斷是否完成輸入,需要用其他方法,如用一個(gè)結(jié)束按鈕。列表(List)列表提供了很多文本選項(xiàng),可以同時(shí)看到多項(xiàng),也有滾動條的支持,并且可以單選或多選。當(dāng)用戶單選或多選時(shí),會產(chǎn)生
20、ItemEvent事件。Demo:顯示組件/ Text F i e l dText F i e l dtf 1 ,tf 2 ,tf 3 ,tf 4 ;tf 1 = new Text F i e l d() ;/a b ltextf i e l df i e l d oftf 2 tf 3 tf 4=new new newText F i e l d( ,20) ;/b l20 co l umnsText F i e l d( o! ) ;/ predef i nedtextd i sp l ayedText F i e l d( o ,30) ;/ predef i nedtexti n 30
21、 co l umnsAWT的組件滾動條(Scrollbar)滾動條一般不單獨(dú)使用,它通常與另一個(gè)組件聯(lián)合使用,用以指示另一個(gè)組件的變化情況。一般情況下,它可以用ScrollPane代替。畫布(Canvas)畫布類在使用時(shí)必須被繼承,它本身并不做任何事情,它只是在屏幕上生成了一個(gè)矩形空白區(qū)域,使應(yīng)用程序能夠在上面任意作畫,如寫文字、畫各種圖形、接收鍵盤或鼠標(biāo)輸入等。如果想在畫布上完成圖畫功能,必須重寫其pa()方法。各種鼠標(biāo)、鍵盤事件,只需實(shí)現(xiàn)KeyListener、畫布MouseMotionListener和MouseListener接口即可。當(dāng)在畫布中輸入字符時(shí),必須先調(diào)用requestFo
22、ucus()方法為畫布獲得輸入焦點(diǎn),一般在mouseClicked()方法中調(diào)用該方法。AWT的組件菜單菜單與其他組件不同,無法直接添加到容器的某一位置,也無法用布局管理器對其加以控制,它由以下概念支撐:菜單條(Bar)只能添加到Frame中(用setBar()),作為擺放菜單的容器。菜單()菜單項(xiàng)容器,負(fù)責(zé)顯示并控制其中的菜單項(xiàng)。它支持菜單嵌套。菜單項(xiàng)(Item)真正的動作,可以用ActionListener復(fù)選框菜單項(xiàng)(Checkbox真正的動作, 可以用ItemListener其事件(ActionEvent)。Item)其事件(ItemEvent)。彈出式菜單(Popup)與菜單相似,也
23、是菜單項(xiàng)容器。AWT的組件用戶可以從Component中繼承來創(chuàng)建自己的輕量級組件,此時(shí),在新的組件中一般要實(shí)現(xiàn)(重寫)以下方法:構(gòu)造方法:如果組件要響應(yīng)事件(如鼠標(biāo)按鍵),構(gòu)造方法中必須調(diào)用enab l eEvents()方法;更改組件狀態(tài)的方法:比如setText()方法等,在這些方法中,如果狀態(tài)的變化引起了組件外觀的變化,則需要調(diào)用repa()方法,如果組件的尺寸發(fā)生了變化,則在調(diào)用repa invalidate()方法;()方法前還需要調(diào)用AWT的組件組件的繪制方法:pa(),還包括組件最佳尺寸getPreferredSize()和最小尺寸getMinimumSize()方法等。組件的
24、事件器方法和取消方法:addAct i onL i stener()和removeAct i onL i stener(),在這兩個(gè)方法中要調(diào)用AWTEvent Mu l t i caster現(xiàn);contains()方法:類中的方法來實(shí)如果組件只響應(yīng)一定區(qū)域中發(fā)生的事件;組件狀態(tài)改變及事件產(chǎn)生方法:prosX(),如prosMouseEvent()組件的應(yīng)用菜單畫布單行文本輸入?yún)^(qū)按鈕復(fù)選框下拉式菜單列表文本輸入?yún)^(qū)版面布局版面布局為了使生成的圖形用戶界面具有良好的無關(guān)性,Java語言提供了布局管理器來管理組件在容器中的布局,而不使用直接設(shè)置組件的位置和大小的方式。每個(gè)容器都要一個(gè)布局管理器,容器
25、中組件的定位都由它來決定。當(dāng)容器需要對某個(gè)組件進(jìn)行定位時(shí),就會調(diào)用其對應(yīng)的布局管理器。版面布局在程序中安排組件的位置和大小時(shí),應(yīng)注意:容器中布局管理器負(fù)責(zé)各組件的大小和位置,用戶無法在這種情況下設(shè)置組件的這些屬性,如試圖調(diào)用 setLocation(), setSize(), setBounds()等。如果用戶確實(shí)需要自己設(shè)置組件的大小和位置,則應(yīng)取消該容器的布局管理器,方法為:setLayout(null)但用戶必須使用setLocation(), setSize(), setBounds()等方法為組件設(shè)置大小和位置,不過程序?qū)⑾到y(tǒng)相關(guān)。版面布局在容器中所有組件的布局都由布局管理器來控制,
26、每個(gè)容器,如Panel、Windows或Frame都有各自缺省的布局管理器,程序員也可以在程序中指定一個(gè)新的布局管理器。Java語言中包含五種布局管理器:FlowLayout:Panel和Applet的缺省布局管理器BorderLayout:Window、Dialog和Frame的缺省布局管理器GridLayoutCardLayoutGridBagLayout版面布局FlowLayout布局方式是將組件一排一排地依次放置,它自動調(diào)用組件的getPreferredSize()方法,使用組件的最佳尺寸來顯示組件。當(dāng)容器被重新設(shè)置大小后,則布局也會隨之發(fā)生改變:各組件的大小不變,但相對位置會發(fā)生變化
27、。FlowLayout類有三種構(gòu)造方法:pub li cF l owLayout ()使用缺省居中對齊方式,組件間的水平和豎直間距為缺省值5個(gè)象素。pub li c F l owLayout (a li gnment )使用指定的對齊方式(F l owLayout. LEFT,F(xiàn) l owLayout. RIGHT ,enter),水平和豎直間距為缺省值5象素。F l owLayopub li cF l owLayout (a li gnmen t, hor i zonta l Gap,ver t i ca l Gap)使用指定的對齊方式,水平和豎直間距也為指定值。Demo: flowlayo
28、utpublic class FlowWindow extends Framepublic FlowWindow()FlowLayout() );t(Helvetica, Font.PLAIN, 14);Button 1);add(new Button(2);add(new Button(Button 3);add(new Button(Long-Named Button 4); add(new Button(Button 5);publichandleEvent(Event e)if (e.id = Event.WINDOW_DESTROY) System.exit(0);return su
29、per.handleEvent(e);public sic void main(String args)FlowWindow window = new FlowWindow(); window.setTitle(FlowWindow Application);windock();window.show();setLayout( new setFont(new Fond(new Button(版面布局BorderLayout布局方式提供了更復(fù)雜的布局控制方法,它包括5個(gè)區(qū)域:North, South, East, West和Center,其方位依據(jù)上北下南左。當(dāng)容器的尺寸發(fā)生變化時(shí),各組件的相對
30、位置不變,但中間部分組件的尺寸會發(fā)生變化,南北組件的高度不變,東西組件的寬度不變。BorderLayout類有二種構(gòu)造方法:pub li cBorderLayout ()各組件間的水平和豎直間距為缺省值0個(gè)象素。pub li cBorderLayout (hor i zonta l Gap,ver t i ca l Gap)各組件間的水平和豎直間距為指定值。版面布局如果容器使用了BorderLayout布局方式,則用add()方法往容器中添加組件時(shí)必須指明添加的位置,否則組件將無法正確顯示(不同的布局管理器,向容器中添加組件的方法也不同)。add(“West”, new Button(“Wes
31、t”);add(“North”, new Button(“North”);add(new Button(“West”), BorderLayout.SOUTH); 若沒有指明放置位置,則表明為默認(rèn)得“Center”方位。每個(gè)區(qū)域只能添加一個(gè)組件,若添加多個(gè),則只能顯示一個(gè)。如果想在一個(gè)區(qū)域添加多個(gè)組件,則必須先在該區(qū)域放一個(gè)容器,再將多個(gè)組件放在該容器中。若每個(gè)區(qū)域或若干個(gè)區(qū)域沒有放置組件,東西南北區(qū)域?qū)⒉粫蓄A(yù)留,而中間區(qū)域?qū)⒅每?。Demo:borderlayoutpublic class BorderWindow extends Framepublic BorderWindow()setL
32、ayout(new BorderLayout(5,5); setFont(new Font(Helvetica, Font.PLAIN, 14);add(North, new Button(North);add(South, new Button(South);add(East, new Button(East);add(West, new Button(West); add(Center, new Button(Center);publichandleEvent(Event e)if (e.id = Event.WINDOW_DESTROY) System.exit(0);return su
33、per.handleEvent(e);public sic void main(String args)BorderWindow window = new BorderWindow(); window.setTitle(BorderWindow Application); windock();window.show();版面布局GridLayout布局方式可以使容器中的各組件呈網(wǎng)格狀分布。容器中各組件的高度和寬度相同,當(dāng)容器的尺寸發(fā)生變化時(shí),各組件的相對位置不變,但各自的尺寸會發(fā)生變化。各組件的排列方式為:從上到下,從左到右。與BorderLayout類相類似,如果想在一個(gè)網(wǎng)格單元中添加多個(gè)組
34、件,則必須先在該網(wǎng)格單元放一個(gè)容器,再將多個(gè)組件放在該容器中。版面布局GridLayout類有三種構(gòu)造方法:pub li cGr i dLayout ()在一行中放置所有的組件,各組件間的水平間距為0象素。pub li c Gr i dLayout (rows,co l s)生成一個(gè)rows行,co l s列的管理器,最多能放置rows*co l s個(gè)組件。rows或co l s可以有一個(gè)為0。若rows為0,這表示每行放置co l s個(gè)組件,根據(jù)具體組件數(shù),可以有任意多行;若co l s為0,這表示共有rows行,根據(jù)具體組件數(shù),每行可以放置任意多個(gè)組件組件間的水平和豎直間距為0象素。pub
35、 li c Gr i dLayout ( ver t i ca l Gap )rows,co l s,hor i zonta l Gap,Demo:gridlayoutpublic class GridWindow extends Framepublic GridWindow()tLayout(new GridLayout(0,2);tFont(new Font(Helvetica, Font.PLAIN, 14);d(new Button(Button 1);add(new Button(2);add(new Button(Button 3);add(new Button(Long-Name
36、d Button 4); add(new Button(Button 5);publichandleEvent(Event e)if (e.id = Event.WINDOW_DESTROY) System.exit(0);return super.handleEvent(e);public sic void main(String args)GridWindow window = new GridWindow(); window.setTitle(GridWindow Application);windock();window.show();版面布局CardLayout布局方式可以幫助用戶處
37、理兩個(gè)或的組件共享同一顯示空間。共享空間的組件之間的關(guān)系就像一摞牌一樣,它們摞在一起,只有最上面的組件是可見的。CardLayout可以象換牌一樣處理這些共享空間的組件:為每定義一個(gè)名字,可按名字選牌;可以按順序向前或向后翻牌;也可以直接選第一張或最后一。arent,St r i ng arent )pub li c pub li c pub li c pub li c pub li cvo i d vo i d vo i d vo i d vo i dshow(Conta i n next (Conta i nname)prev i ous(Conta i n(Conta i narent
38、) arent )l ast (Conta i narent )其中,Conta i ner是擁有該CardLayout布局管理器的容器。版面布局CardLayout類有二種構(gòu)造方法:pub li cCardLayout ()組件距容器左右邊界和上下邊界的距離為缺省值0個(gè)象素。pub li cCardLayout (hor i zonta l Gap,ver t i ca l Gap)組件距容器左右邊界和上下邊界的距離為指定值。與BorderLayout類和GridLayout類相類似,每中只能放置一個(gè)組件,如果想在一放置多個(gè)組件,則必須先在該牌放一個(gè)容器,再將多個(gè)組件放在該容器中。采用Car
39、dLayout布局方式時(shí),向容器中添加組件時(shí)可以為組件取一個(gè)名字,以供更換顯示組件時(shí)使用:add(Component, String);版面布局GridBagLayout布局方式是AWT中最靈活、同時(shí)也是最復(fù)雜的一種布局方式。與GridLayout相同,它也是將容器中的組件按照行、列的方式放置,但各組件所占的空間可以互不相同。GridBagLayout根據(jù)對每個(gè)組件所施加的空間限制、每個(gè)組件自身所設(shè)定的最小尺寸和最佳尺寸來為每個(gè)組件分配空間。對組件施加空間限制是通過類GridBagConstra來實(shí)現(xiàn)的。s版面布局類GridBagConstras中提供了一些相應(yīng)的屬性和常量來設(shè)置對組件的空間限
40、制:gridx, gridygridwidth, gridheightfillipadx, ipadyinsetsarchorweightx, weighty版面布局(1) gridx, gridy()gridx指明組件顯示區(qū)域左端在容器中的位置,若為0,則組件處于最左端的單元。它是一個(gè)非負(fù)的整數(shù),其缺省值為 Gr i dBagConst ras. RELATIVE,表明把組件放一個(gè)添加到容器中的組件的右端。gridy指明組件顯示區(qū)域上端在容器中的位置,若為0,則組件處于最上端的單元。它是一個(gè)非負(fù)的整數(shù),其缺省值為 Gr i dBagConst ras. RELATIVE,表明把組件放一個(gè)添加
41、到容器中的組件的下端。版面布局(2)gridwidth, gridheight ()gridwidth指明組件顯示區(qū)在一行中所占的網(wǎng)格單元數(shù)(寬度)。它是一個(gè)非負(fù)的整數(shù),其缺省值為 1。若其值為 Gr i dBagConst ras. REMAINDER,表明該組件是一行中最后一個(gè)組件;若其值為Gr i dBagConst ra該組件緊挨著該行中最后一個(gè)組件。s. RELATIVE,表明gridheight指明組件顯示區(qū)在一列中所占的網(wǎng)格單元數(shù)(高度)。它是一個(gè)非負(fù)的整數(shù),其缺省值為 1。若其值為 Gr i dBagConst ras. REMAINDER,表明該組件是一列中最后一個(gè)組件;若其
42、值為Gr i dBagConst ra該組件緊挨著該列中最后一個(gè)組件。s. RELATIVE,表明版面布局(3)fill ()fill屬性指明當(dāng)組件所在的網(wǎng)格單元的區(qū)域大于組件所請求的區(qū)域時(shí),是否改變組件的尺寸:是按照水平方向填滿顯示區(qū),還是按垂直方向填滿顯示區(qū),其取值可為:Gr i dBagConst ra兩個(gè)方向都不填滿;Gr i dBagConst ra示區(qū),高度不變;Gr i dBagConst ra區(qū),寬度不變;Gr i dBagConst ras. NONE:缺省值,保持原有尺寸,s. HORIZONTAL:按水平方向填滿顯s. VERTICAL:按垂直方向填滿顯示s. BOTH:
43、兩個(gè)方向上都填滿顯示區(qū)。版面布局(4)ipadx, ipady ()ipadx指明組件的寬度與指定的最小寬度之間的關(guān)系:組 件的寬度為“ 指定的最小寬度 ipadx*2 ”。其缺省值為0。ipady指明組件的高度與指定的最小高度之間的關(guān)系:組 件的高度為“ 指定的最小高度 ipady*2 ”。其缺省值為0。版面布局insets (Insets)insets指明了組件與其顯示區(qū)邊緣之間的距離,大小由一個(gè)Insets對象指定。Insets類有四個(gè)屬性:top:上端間距bottom:下端間距l(xiāng)eft:左端間距right:右端間距其缺省值為一個(gè)上述四個(gè)屬性值都為0的對象:new Insets(0, 0
44、, 0, 0);版面布局(6)archor ()archor屬性指明了當(dāng)組件的尺寸小于其顯示區(qū)時(shí),在顯示區(qū)中如何放置改組件的位置,其值可為:Gr i dBagConst ra Gr i dBagConst ra Gr i dBagConst ra Gr i dBagConst ra Gr i dBagConst ra Gr i dBagConst ra Gr i dBagConst ra Gr i dBagConst ra Gr i dBagConst ras. CENTER(缺省值)s. NORTHs. NORTHEAST s. EASTs. SOUTHEAST s. SOUTHs. SOU
45、THWEST s. WESTs. NORTHWEST版面布局(7)weightx, weighty(double)weightx指明當(dāng)容器擴(kuò)大時(shí),如何在列間為組件分的空間,其值可以從0.0到1.0,缺省值為0.0。weighty指明當(dāng)容器擴(kuò)大時(shí),如何在行間為組件分的空間,其值可以從0.0到1.0 ,缺省值為0.0 。外外若兩者都為0,所有組件都團(tuán)聚在容器的,因?yàn)榇藭r(shí)所有額外空間都添加在網(wǎng)格單元與容器邊緣之間。數(shù)值越大,表明組件的行或列將占有的額外空間。若兩者都為1.0,表明組件的行或列將占有所有的額外空間。版面布局當(dāng)一個(gè)容器的布局方式為GridBagLayout時(shí),往其中添加一個(gè)組件,必須先用GridBagConstras設(shè)置該組件的空間限制。/在一個(gè)容器中GridBagLayout g = new GridBagLayout(); GridBagConstras c = new GridBagConstras(); setLayout( g );Button b = new Button(“Test”); c.fill = /設(shè)置c的值/生成組件bg.setConstra add( b );s( b, c );/根據(jù)c的值對組件b進(jìn)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美發(fā)店干股合作協(xié)議書
- 食堂經(jīng)理合作協(xié)議
- 科技創(chuàng)新驅(qū)動未來設(shè)計(jì)的新動力
- 2025年聚四氫呋喃醚合作協(xié)議書
- 司機(jī)薪合同范本
- 酒店制式合同范本
- 羊尖租房合同范本
- 一樓加裝電梯合同范本
- 合同股合同范本
- 企業(yè)簽約技校合同范本
- 小學(xué)勞動教育二年級下冊教學(xué)計(jì)劃
- 三年級上冊脫式計(jì)算100題及答案
- 2024春開學(xué)第一課-開學(xué)第一課 禁毒我先行 課件
- 《聽歌識曲》課件
- 金屬冶煉安全培訓(xùn)課件
- 采血護(hù)士培訓(xùn)課件
- 140m集裝箱船船體說明書
- 高等教育學(xué)課件-
- 送達(dá)地址確認(rèn)書
- 機(jī)動車檢測站管理制度
- 大班語言《你是螞蟻小可》
評論
0/150
提交評論