版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第十四課,Java GUI設(shè)計(jì),本課內(nèi)容,Java抽象窗口工具集(AWT) Java組件和容器 常用組件類型 布局管理器及其使用,抽象窗口工具集(AWT),AWT- AbstractWindow Toolkit GUI - Graphical User Interface AWT中定義了多種類和接口,用于在Java Application/Applet中進(jìn)行GUI設(shè)計(jì) java程序要顯示的GUI組件必須是抽象類Component或MenuComponent的子類,java.awt 包,java.awt包 提供了基本的java程序GUI設(shè)計(jì)工具。 Component/MenuComponent
2、Container LayoutManager,組件(Component),Java的圖形用戶界面的最基本組成部分是組件,組件是一個(gè)可以以圖形化的方式顯示在屏幕上并能與用戶進(jìn)行交互的對(duì)象,例如一個(gè)按鈕,一個(gè)標(biāo)簽等。 組件不能獨(dú)立地顯示出來(lái),必須將組件放在一定的容器中才可以顯示出來(lái)。,容 器(Container),容器(Container)實(shí)際上是Component的子類,因此容器類對(duì)象本身也是一個(gè)組件,具有組件的所有性質(zhì),另外還具有容納其它組件和容器的功能。 容器類對(duì)象可使用方法add()添加組件 兩種主要的容器類型 Window: 可自由停泊的頂級(jí)窗口 Panel:可作為容器容納其它組件,但
3、不能獨(dú)立存在,必須被添加到其它容器中(如Window 或 Applet),組件定位,Java組件在容器中的位置和尺寸由布局管理器決定 如要人工控制組件在容器中的大小位置,可取消布局管理器,然后使用Component類的下述成員方法: setLocation() setSize() setBounds(),Frame類,Frame類是抽象類Window的子類 Frame對(duì)象顯示效果是一個(gè)“窗口”,帶有標(biāo)題和尺寸重置角標(biāo) 默認(rèn)初始化為不可見(jiàn)的,可使用setVisible(true)方法使之變?yōu)榭梢?jiàn) 默認(rèn)的布局管理器是BorderLayout 可使用setLayout()方法改變其默認(rèn)布局管理器,F
4、rame類繼承層次,java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Window | +-java.awt.Frame,Frame 應(yīng)用舉例,import java.awt.*; public class TestFrame public static void main( String args) Frame f = new Frame(My First Test); f.setSize( 170,100); f.setBackground( Color.blue); f.setVisib
5、le( true); ,Panel類,提供容納組件的空間 可以采用和所在容器不同的布局管理器 Panel類的繼承層次,java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Panel,FrameWithPanel應(yīng)用舉例,import java.awt.*; public class TestFrameWithPanel public static void main(String args) Frame f = new Frame(MyTest Frame); Panel pan = new P
6、anel(); f.setSize(200,200); f.setBackground(Color.blue); f.setLayout(null); / 取消布局管理器 pan.setSize(100,100); pan.setBackground(Color.green); f.add(pan); f.setVisible(true); ,Ex1,參考P10、12頁(yè)程序,練習(xí)Frame與Panel組件的使用,對(duì)使用AWT組件創(chuàng)建圖形用戶界面機(jī)制建立初步認(rèn)識(shí);,布局管理器,為了使我們生成的圖形用戶界面具有良好的平臺(tái)無(wú)關(guān)性,Java語(yǔ)言中,提供了布局管理器這個(gè)工具來(lái)管理組件在容器中的布局,而不
7、使用直接設(shè)置組件位置和大小的方式。 每個(gè)容器都有一個(gè)布局管理器,當(dāng)容器需要對(duì)某個(gè)組件進(jìn)行定位或判斷其大小尺寸時(shí),就會(huì)調(diào)用其對(duì)應(yīng)的布局管理器。,容器布局 (Container Layouts),FlowLayout BorderLayout GridLayout CardLayout GridBagLayout,默認(rèn)布局管理器,Component,Container,Window,Panel,Frame,Dialog,Applet,BorderLayout,FlowLayout,FlowLayout布局管理器,FlowLayout是Panel類的默認(rèn)布局管理器 FlowLayout布局對(duì)組件逐行
8、定位,行內(nèi)從左到右,一行排滿后換行 默認(rèn)對(duì)齊方式為居中對(duì)齊 不改變組件的大小,按組件原有尺寸顯示組件 可在構(gòu)造方法中設(shè)置不同的組件間距、行距及對(duì)齊方式,FlowLayout 舉例,import java.awt.*; public class TestFlowLayout public static void main(String args) Frame f = new Frame(Flow Layout); Button button1 = new Button(Ok); Button button2 = new Button(Open); Button button3 = new But
9、ton(Close); f.setLayout(new FlowLayout(); f.add(button1); f.add(button2); f.add(button3); f.setSize(100,100); f.setVisible(true); ,FlowLayout 的構(gòu)造方法,new FlowLayout(FlowLayout.RIGHT,20,40); 右對(duì)齊,組件之間水平間距20個(gè)像素,豎直間距40個(gè)像素; new FlowLayout(FlowLayout.LEFT); 左對(duì)齊,水平和豎直間距為缺省值:5; new FlowLayout(); 使用缺省的居中對(duì)齊方式,水
10、平和豎直間距為缺省值:5;,BorderLayout 布局管理器,BorderLayout是Frame類的默認(rèn)布局管理器 BorderLayout將整個(gè)容器的布局劃分成東、西、南、北、中五個(gè)區(qū)域,組件只能被添加到指定的區(qū)域 如不指定組件的加入部位,則默認(rèn)加入到Center區(qū)域 每個(gè)區(qū)域只能加入一個(gè)組件,如加入多個(gè),則先前加入的組件會(huì)被遺棄,BorderLayout 布局管理器,BorderLayout型布局容器尺寸縮放原則 北、南兩個(gè)區(qū)域只能在水平方向縮放(寬度可調(diào)整) 東、西兩個(gè)區(qū)域只能在垂直方向縮放(高度可調(diào)整) 中部可在兩個(gè)方向上縮放,North,South,West,Eest,Cent
11、er,BorderLayout舉例,import java.awt.*; public class TestBorderLayout public static void main(String args) Frame f; f = new Frame(Border Layout); Button bn = new Button(BN); Button bs = new Button(BS); Button bw = new Button(BW); Button be = new Button(BE); Button bc = new Button(BC); f.add(bn, North);
12、 f.add(bs, South); f.add(bw, West); f.add(be, East); f.add(bc, Center); f.setSize(200,200); f.setVisible(true); ,GridLayout 布局管理器,GridLayout型布局管理器將布局劃分成規(guī)則的矩形網(wǎng)格,每個(gè)單元格區(qū)域大小相等. 組件被添加到每個(gè)單元格中,先從左到右添滿一行后換行,再?gòu)纳系较? 在GridLayout構(gòu)造方法中指定分割的行數(shù)和列數(shù). new GridLayout(3,4);,GridLayout舉例,import java.awt.*; public class
13、TestGridLayout public static void main(String args) Frame f = new Frame(GridLayout Example); Button b1 = new Button(b1); Button b2 = new Button(b2); Button b3 = new Button(b3); Button b4 = new Button(b4); Button b5 = new Button(b5); Button b6 = new Button(b6); f.setLayout (new GridLayout(3,2); f.add
14、(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5); f.add(b6); f.pack(); f.setVisible(true); ,* CardLayout 布局管理器,CardLayout布局管理器能夠幫助用戶處理兩個(gè)以至更多的成員共享同一顯示空間,就好象一疊卡片摞在一起。 注意:在一張卡片中只能顯示一個(gè)組件,因此可以使用容器嵌套方法顯示多個(gè)組件。,* GridBagLayout 布局管理器,AWT中最靈活、最復(fù)雜的布局管理器,各組件所占空間可以不相同且靈活規(guī)定,參見(jiàn)中文參考書(shū);,容器的嵌套使用舉例,import java.awt.*; p
15、ublic class NestedContainer public static void main(String args) Frame f = new Frame(NestedContainer); Button b0 = new Button(display Area); Panel p = new Panel(); p.setLayout(new GridLayout(2,2); Button b1 = new Button(1); Button b2 = new Button(2); Button b3 = new Button(3); Button b4 = new Button
16、(4); p.add(b1); p.add(b2); p.add(b3);p.add(b4); f.add(b0, North); f.add(p, Center); f.pack(); f.setVisible(true); ,Ex2 布局管理器,參照P18頁(yè)的例子練習(xí)使用FlowLayout布局管理器,要求在布局管理器的構(gòu)造方法中嘗試設(shè)置不同的對(duì)齊方式并顯式指定組件的水平和豎直間距; 參照P22頁(yè)的例子練習(xí)使用BorderLayout布局管理器,試驗(yàn)不指明加入位置f.add(bs);以及向同一位置加入多個(gè)組件的實(shí)際效果; 參照P24頁(yè)的例子練習(xí)使用GridLayout布局管理器,嘗試在聲明
17、為2*3個(gè)GridLayout網(wǎng)格的Frame中加入多于或少于6個(gè)組件時(shí)程序的運(yùn)行表現(xiàn);,布局管理器總結(jié)(1),Frame Frame是一個(gè)頂級(jí)窗口。 Frame的缺省布局管理器為BorderLayout。 Panel Panel無(wú)法單獨(dú)顯示,必須添加到某個(gè)容器中。 Panel的缺省布局管理器為FlowLayout。 當(dāng)把Panel作為一個(gè)組件添加到某個(gè)容器中后,該P(yáng)anel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某個(gè)區(qū)域顯示多個(gè)組件。,布局管理器總結(jié)(2),在程序中安排組件的位置和大小時(shí),應(yīng)注意: 容器中的布局管理器負(fù)責(zé)各個(gè)組件的大小和位置,因此用戶
18、無(wú)法在這種情況下設(shè)置組件的這些屬性。如果試圖使用Java語(yǔ)言提供的setLocation(),setSize(),setBounds()等方法,則都會(huì)被布局管理器覆蓋。 如果用戶確實(shí)需要親自設(shè)置組件大小或位置,則應(yīng)取消該容器的布局管理器,方法為: setLayout(null);,AWT 繪圖,可以在任何Java組件上繪圖(通常Canvas和Panel組件更適合用于繪圖) 每個(gè)Java組件都有一個(gè)public void paint(Graphics g)方法專門(mén)用于繪圖目的,每次重畫(huà)該組件時(shí)都自動(dòng)調(diào)用paint方法。 每個(gè)Java組件都有一個(gè)Graphics類型的屬性,該屬性(對(duì)象)真正完成在
19、相應(yīng)組件上的繪圖功能。 Graphics類中實(shí)現(xiàn)了許多繪圖方法: - 繪制邊框(非填充圖形) - 填充特定區(qū)域 - 繪制其它形狀圖形,AWT 繪圖舉例,import java.awt.*; public class AWTDrawing private Frame f = new Frame( Hello Out There!); private Panel p = new Panel(); public void launchFrame() f.add(p); f.setSize( 170,170); f.setBackground( Color.blue); f.setVisible( true); p.setForeground(Color.red); Graphics g = p.getGraphics(); g.drawArc(30,40,50,60,70,80); g.fillArc(30,40,50,60,70,80); public static void mai
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年公司年會(huì)方案
- 2025 小學(xué)一年級(jí)數(shù)學(xué)下冊(cè)新授課(位置)課件
- 養(yǎng)老院健康檔案管理制度
- 文言文專題復(fù)習(xí)(八下)學(xué)案(含答案)-【2024名師導(dǎo)航】中考語(yǔ)文一輪總復(fù)習(xí)
- 亮劍類型培訓(xùn)課件
- 2025 小學(xué)一年級(jí)數(shù)學(xué)下冊(cè)動(dòng)畫(huà)演示(數(shù)的形成)過(guò)程課件
- 2025 小學(xué)一年級(jí)數(shù)學(xué)下冊(cè)兩位數(shù)減一位數(shù)(退位)準(zhǔn)備課件
- 樣品檢測(cè)培訓(xùn)
- 柳州信息安全培訓(xùn)課件
- 2026年電商物流成本控制面試寶典及答案
- 配電一二次融合技術(shù)的發(fā)展應(yīng)用
- 鋼板鋪設(shè)安全施工方案
- 學(xué)習(xí)動(dòng)力的培養(yǎng)與保持
- 小學(xué)中學(xué)控輟保學(xué)防輟學(xué)主題班會(huì)模版成品課件
- 經(jīng)緯度叢書(shū) 秦制兩千年:封建帝王的權(quán)力規(guī)則
- ppt素材模板超級(jí)瑪麗
- 金庸短篇小說(shuō)《越女劍》中英文對(duì)照版
- 2023年洛陽(yáng)市洛龍區(qū)政務(wù)中心綜合窗口人員招聘筆試題庫(kù)及答案解析
- 山東省就業(yè)登記表
- GA/T 1023-2013視頻中人像檢驗(yàn)技術(shù)規(guī)范
- 工程質(zhì)量評(píng)價(jià)及用戶評(píng)價(jià)表
評(píng)論
0/150
提交評(píng)論