




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Java抽象窗口工具集(AWT)Java組件和容器常用組件類型布局管理器及其使用 AWT- AbstractWindow Toolkit GUI - Graphical User Interface AWT中定義了多種類和接口,用于在Java Application/Applet中進行GUI設(shè)計 java程序要顯示的GUI組件必須是抽象類Component或MenuComponent的子類 java.awt包提供了基本的java程序GUI設(shè)計工具。 Component/MenuComponent Container LayoutManager Java的圖形用戶界面的最基本組成部分是組件,組件
2、是一個可以以圖形化的方式顯示在屏幕上并能與用戶進行交互的對象,例如一個按鈕,一個標簽等。 組件不能獨立地顯示出來,必須將組件放在一定的容器中才可以顯示出來。 容器(Container)實際上是Component的子類,因此容器類對象本身也是一個組件,具有組件的所有性質(zhì),另外還具有容納其它組件和容器的功能。 容器類對象可使用方法add()添加組件 兩種主要的容器類型 Window: 可自由停泊的頂級窗口 Panel:可作為容器容納其它組件,但不能獨立存在,必須被添加到其它容器中(如Window 或 Applet) Java組件在容器中的位置和尺寸由布局管理器決定 如要人工控制組件在容器中的大小位
3、置,可取消布局管理器,然后使用Component類的下述成員方法: setLocation() setSize() setBounds() Frame類是抽象類Window的子類 Frame對象顯示效果是一個“窗口”,帶有標題和尺寸重置角標 默認初始化為不可見的,可使用setVisible(true)方法使之變?yōu)榭梢?默認的布局管理器是BorderLayout 可使用setLayout()方法改變其默認布局管理器Frame類類繼承層次繼承層次java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.W
4、indow | +-java.awt.Frame 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.setVisible( true); 提供容納組件的空間 可以采用和所在容器不同的布局管理器 Panel類的繼承層次java.lang.Object | +-java.awt.Component | +-java
5、.awt.Container | +-java.awt.Panelimport java.awt.*;public class TestFrameWithPanel public static void main(String args) Frame f = new Frame(MyTest Frame); Panel pan = new Panel(); f.setSize(200,200); f.setBackground(Color.blue); f.setLayout(null); / 取消布局管理器 pan.setSize(100,100); pan.setBackground(Co
6、lor.green); f.add(pan); f.setVisible(true); Ex1 參考P10、12頁程序,練習(xí)Frame與Panel組件的使用,對使用AWT組件創(chuàng)建圖形用戶界面機制建立初步認識; 為了使我們生成的圖形用戶界面具有良好的平臺無關(guān)性,Java語言中,提供了布局管理器這個工具來管理組件在容器中的布局,而不使用直接設(shè)置組件位置和大小的方式。 每個容器都有一個布局管理器,當容器需要對某個組件進行定位或判斷其大小尺寸時,就會調(diào)用其對應(yīng)的布局管理器。 FlowLayout BorderLayout GridLayout CardLayout GridBagLayoutCompo
7、nentContainerWindowPanelFrameDialogAppletBorderLayoutFlowLayoutFlowLayout是Panel類的默認布局管理器FlowLayout布局對組件逐行定位,行內(nèi)從左到右,一行排滿后換行默認對齊方式為居中對齊不改變組件的大小,按組件原有尺寸顯示組件 可在構(gòu)造方法中設(shè)置不同的組件間距、行距及對齊方式import java.awt.*;public class TestFlowLayout public static void main(String args) Frame f = new Frame(Flow Layout); Butto
8、n button1 = new Button(Ok); Button button2 = new Button(Open); Button button3 = new Button(Close); f.setLayout(new FlowLayout(); f.add(button1); f.add(button2); f.add(button3); f.setSize(100,100); f.setVisible(true); new FlowLayout(FlowLayout.RIGHT,20,40);右對齊,組件之間水平間距20個像素,豎直間距40個像素;new FlowLayout(F
9、lowLayout.LEFT);左對齊,水平和豎直間距為缺省值:5;new FlowLayout();使用缺省的居中對齊方式,水平和豎直間距為缺省值:5; BorderLayout是Frame類的默認布局管理器 BorderLayout將整個容器的布局劃分成東、西、南、北、中五個區(qū)域,組件只能被添加到指定的區(qū)域 如不指定組件的加入部位,則默認加入到Center區(qū)域 每個區(qū)域只能加入一個組件,如加入多個,則先前加入的組件會被遺棄 BorderLayout型布局容器尺寸縮放原則 北、南兩個區(qū)域只能在水平方向縮放(寬度可調(diào)整) 東、西兩個區(qū)域只能在垂直方向縮放(高度可調(diào)整) 中部可在兩個方向上縮放N
10、orth South West Eest Centerimport 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)
11、;f.add(bs, South);f.add(bw, West);f.add(be, East);f.add(bc, Center);f.setSize(200,200);f.setVisible(true);GridLayout型布局管理器將布局劃分成規(guī)則的矩形網(wǎng)格,每個單元格區(qū)域大小相等. 組件被添加到每個單元格中,先從左到右添滿一行后換行,再從上到下. 在GridLayout構(gòu)造方法中指定分割的行數(shù)和列數(shù).new GridLayout(3,4);import java.awt.*;public class TestGridLayout public static void main(S
12、tring 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(b1); f.add(b2); f.add(b3); f.add(b4); f
13、.add(b5); f.add(b6); f.pack(); f.setVisible(true); CardLayout布局管理器能夠幫助用戶處理兩個以至更多的成員共享同一顯示空間,就好象一疊卡片摞在一起。 注意:在一張卡片中只能顯示一個組件,因此可以使用容器嵌套方法顯示多個組件。 AWT中最靈活、最復(fù)雜的布局管理器,各組件所占空間可以不相同且靈活規(guī)定,參見中文參考書;import java.awt.*;public class NestedContainer public static void main(String args) Frame f = new Frame(NestedCon
14、tainer);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(4);p.add(b1); p.add(b2);p.add(b3);p.add(b4); f.add(b0, North);f.add(p, Center);f.pack(); f.setVisibl
15、e(true); 1.參照P18頁的例子練習(xí)使用FlowLayout布局管理器,要求在布局管理器的構(gòu)造方法中嘗試設(shè)置不同的對齊方式并顯式指定組件的水平和豎直間距;2.參照P22頁的例子練習(xí)使用BorderLayout布局管理器,試驗不指明加入位置f.add(bs);以及向同一位置加入多個組件的實際效果;3.參照P24頁的例子練習(xí)使用GridLayout布局管理器,嘗試在聲明為2*3個GridLayout網(wǎng)格的Frame中加入多于或少于6個組件時程序的運行表現(xiàn); Frame Frame是一個頂級窗口。 Frame的缺省布局管理器為BorderLayout。 Panel Panel無法單獨顯示,必
16、須添加到某個容器中。 Panel的缺省布局管理器為FlowLayout。 當把Panel作為一個組件添加到某個容器中后,該Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某個區(qū)域顯示多個組件。 在程序中安排組件的位置和大小時,應(yīng)注意: 容器中的布局管理器負責(zé)各個組件的大小和位置,因此用戶無法在這種情況下設(shè)置組件的這些屬性。如果試圖使用Java語言提供的setLocation(),setSize(),setBounds()等方法,則都會被布局管理器覆蓋。 如果用戶確實需要親自設(shè)置組件大小或位置,則應(yīng)取消該容器的布局管理器,方法為:setLayout(n
17、ull);可以在任何Java組件上繪圖(通常Canvas和Panel組件更適合用于繪圖)每 個 J a v a 組 件 都 有 一 個 p u b l i c v o i d paint(Graphics g)方法專門用于繪圖目的,每次重畫該組件時都自動調(diào)用paint方法。每個Java組件都有一個Graphics類型的屬性,該屬性(對象)真正完成在相應(yīng)組件上的繪圖功能。Graphics類中實現(xiàn)了許多繪圖方法:- 繪制邊框(非填充圖形)- 填充特定區(qū)域- 繪制其它形狀圖形import java.awt.*;public class AWTDrawing private Frame f = new
18、 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 main( String args) AWTDrawi
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高一第3章數(shù)學(xué)試卷
- 汾陽6年級數(shù)學(xué)試卷
- 肋骨骨折術(shù)后護理
- 2024年11月浙江海鹽湖商村鎮(zhèn)銀行股份有限公司招考人員筆試歷年參考題庫附帶答案詳解
- 2025至2030乘用車行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2024年南充市順慶區(qū)和平路街道社區(qū)衛(wèi)生服務(wù)中心招聘筆試真題
- 2025至2030草藥和有機睫毛膏行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 福清市初三數(shù)學(xué)試卷
- 分數(shù)乘法五下數(shù)學(xué)試卷
- 高考新教材數(shù)學(xué)試卷
- 神經(jīng)生物學(xué)試題(卷)與答案解析6套
- GB∕T 10544-2022 橡膠軟管及軟管組合件 油基或水基流體適用的鋼絲纏繞增強外覆橡膠液壓型 規(guī)范
- FANUC機器人R-2000iA機械單元維護手冊
- 中國當代文學(xué)專題-國家開放大學(xué)2022年1月期末考試復(fù)習(xí)資料-漢語言本科復(fù)習(xí)資料
- SHR-500A高速混合機
- 擠密夯實水泥土樁復(fù)合地基工程監(jiān)理細則
- 機動車維修經(jīng)營備案表
- 井下作業(yè)質(zhì)量管理制度
- 超星爾雅學(xué)習(xí)通《國際金融》2020章節(jié)測試含答案(上)
- 污水處理工程調(diào)試和試運行手冊通用
- 國家開放大學(xué)電大??啤掇r(nóng)村社會學(xué)》期末試題及答案
評論
0/150
提交評論