第12章-圖形用戶界面_第1頁
第12章-圖形用戶界面_第2頁
第12章-圖形用戶界面_第3頁
第12章-圖形用戶界面_第4頁
第12章-圖形用戶界面_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第12章圖形用戶界面主講:胡伏湘復(fù)習(xí)提問1、什么會(huì)產(chǎn)生異常?2、Java定義的標(biāo)準(zhǔn)異常類有哪幾個(gè)?3、異常處理的語句結(jié)構(gòu)是怎樣的?4、如何拋出異常?本章提要主要知識(shí)點(diǎn):圖形用戶界面的主要特征;AWT組件的一般功能;Frame類和Panel類的用法;窗口布局管理

學(xué)習(xí)目標(biāo):掌握圖形用戶界面(GUI)的組件構(gòu)成,主要的容器的功能及組件布局管理方法,能夠運(yùn)用運(yùn)用AWT的基本組件設(shè)計(jì)圖形用戶界面。12.1分析圖形界面特征12.1.1AWT組件的一般功能

在AWT(AbstractWindowToolkit)的概念中,窗口系統(tǒng)中所顯示的各種對象統(tǒng)稱為“組件”(Component)。組件有基本組件和容器組件之分。顧名思義,基本組件是不可再分割的組件,基本組件各自都有它們特定的功能。基本組件是構(gòu)成圖形用戶界面的基本元素。除了菜單以外的所有組件都是Component類的子類。從Component類中,它們繼承了大量的功能,Component類為實(shí)現(xiàn)所有的繪畫功能及事件處理提供了基礎(chǔ)。參見P79-圖5-1。12.1分析圖形界面特征12.1.1AWT組件的一般功能

1.大小和位置可以控制:所有組件的顯示尺寸和位置都是由布局管理器控制的。組件本身也提供了一些方法改變組件的尺寸,將組件放到適當(dāng)?shù)奈恢靡约皥?bào)告組件的合適和最小尺寸。組件還提供了一些方法用于返回關(guān)于組件當(dāng)前尺寸和位置的信息。2.外形可以控制:顏色、字體、效果3.基本繪圖功能的支持:Component類提供了paint()、update()和repaint()方法,這些方法使組件能夠在屏幕上將自己畫出來。4.組件狀態(tài)可以控制:Component類定義了handleEvent()等一組方法,例如:action()方法,用來處理指定類型的事件;Component類也提供了設(shè)置并獲得鍵盤光標(biāo),使鍵盤能夠?qū)M件進(jìn)行控制等方法。12.1分析圖形界面特征基本組件中文名稱功能Button按鈕完成一個(gè)命令CheckBox復(fù)選框可以同時(shí)進(jìn)行多個(gè)選擇CheckBoxGroup單選框只能在一組中選擇一項(xiàng)Choice下拉式列表創(chuàng)建一個(gè)彈出式的選擇菜單List列表創(chuàng)建一個(gè)選擇列表Menu菜單創(chuàng)建菜單系統(tǒng)TextField文本框輸入單行文字Label標(biāo)簽在標(biāo)簽內(nèi)繪制字符Canvas畫布進(jìn)行繪畫TextArea多行文本框輸入多行文字ScrollBar滾動(dòng)條在指定的范圍內(nèi)選擇一個(gè)值12.2創(chuàng)建圖形界面容器12.2.1Frame框架類

AWT的Window類使用戶可以創(chuàng)建獨(dú)立于包含App1et的瀏覽器窗口的窗口。Window類提供了用于窗口操作的基本功能。通常,用戶使用Window類的子類Frame類和Dialog類。Frame類使用戶可以創(chuàng)建帶有菜單條的全功能窗口,即框架;Dialog類用于創(chuàng)建和管理對話框。12.2創(chuàng)建圖形界面容器12.2.1Frame框架類的構(gòu)造方法:newFrame()

//創(chuàng)建不帶標(biāo)題的框架newFrame(Strings)

//創(chuàng)建帶有指定標(biāo)題的框架說明:當(dāng)一個(gè)Frame窗口被創(chuàng)建以后,需要調(diào)用setSize()方法來設(shè)置窗口的大小,并調(diào)用setVisible(true)方法來顯示窗口12.2創(chuàng)建圖形界面容器12.2.1框架類示例importjava.awt.*;//此包必須引入publicclassMyFrameextendsFrame{//繼承Frame類publicstaticvoidmain(Stringargs[]){

MyFrame

fr=newMyFrame("Pleaseseethere!Thisisaframe");fr.setSize(400,200);//窗口大小為400*200

fr.setBackground(Color.blue);//背景為蘭色

fr.setVisible(true);//設(shè)置窗口可見}publicMyFrame(String

str){

super(str);//調(diào)用父類的構(gòu)造方法}}12.2創(chuàng)建圖形界面容器12.2.2Panel面板類

面板是能在屏幕上實(shí)際顯示的組件。面板繼承了Container類,它提供容納其他組件的功能。Applet類是Panel類的一個(gè)子類。要在一個(gè)Panel中嵌套其他面板,用戶只能創(chuàng)建一個(gè)新的Panel,并把它加到窗體(如:Frame或Applet)中,就像用戶加入其他GUI組件一樣,面板無邊框,不能單獨(dú)使用。12.2創(chuàng)建圖形界面容器12.2.2Panel面板類

面板的構(gòu)造方法有:Panel()

建立一個(gè)新面板,采用默認(rèn)的布局管理器Panel(LayoutManager

layout)

建立一個(gè)新面板,采用指定的布局管理器從構(gòu)造方法可以看出,面板沒有標(biāo)題,它由布局管理器進(jìn)行布局的管理

12.2創(chuàng)建圖形界面容器12.2.2Panel面板類舉例

importjava.awt.*;classPanelTestextendsPanel{ publicstaticvoidmain(Stringargs[]){

PanelTestp=newPanelTest(); Framef=newFrame("在框架中添加面板示例!");f.add(p);//將面板添加到框架窗體 f.setSize(300,200);

f.setVisible(true);}}

12.3布局圖形界面組件一般概念:在缺省情況下,每個(gè)容器中都有布局管理器。如果容器的缺省布局管理器不能滿足用戶的需要,用戶可以使用別的布局管理器來代替缺省的。AWT提供了五種布局管理器:FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout。各布局管理器對容器的管理方法不同。12.3布局圖形界面組件關(guān)于默認(rèn)布局管理器:如果用戶不指定容器所使用的布局管理器,那么容器將使用自己缺省的布局管理器。每當(dāng)容器需要改變外觀時(shí),這些缺省的布局管理器會(huì)發(fā)揮作用。大多數(shù)布局管理器的方法都不需要程序直接調(diào)用。AWT提供的布局管理器各有各的長處和缺點(diǎn)。見教材P83表1、表2。12.3布局圖形界面組件選擇布局管理器的基本原則用戶要求盡量使用所有的空間來顯示組件,可以考慮使用BorderLayout和GridBagLayout。如果使用BorderLayout,用戶應(yīng)該將占用空間最大的組件放在中心部位。如果使用GridLayout,用戶需要為組件設(shè)置限制條件。用戶需要在緊湊的一行中以組件的自然尺寸顯示較少組件時(shí),用戶可以考慮用面板容納組件,并使用面板的缺省布局管理器FlowLayout。用戶需要在多行或多列中顯示一些同樣尺寸的組件,GridLayout最適合此情況。如果有必要的話,可以使用面板來容納組件。12.3布局圖形界面組件12.3.1FlowLayout順序布局管理器特點(diǎn):FlowLayout也稱為流式布局管理器,其排版方式就像流程或文本處理器在處理一段文字一樣,常用于RadioButton或CheckBox等組件的排列,它將組件逐個(gè)放置在容器的一行中,一行滿后另起一行。12.3布局圖形界面組件12.3.1FlowLayout順序布局管理器的構(gòu)造方法publicFlowLayout()建立默認(rèn)布局publicFlowLayout(intalign)設(shè)置對齊方法,對齊常量包括FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTERpublicFlowLayout(int

align,int

hgap,int

vgap)參數(shù)hgap和vgap表示組件的水平間距和垂直間距12.3布局圖形界面組件順序布局管理器舉例importjava.awt.*;publicclassTestFlowLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame("這是一個(gè)布局管理器");

f.setLayout(new

FlowLayout());f.add(newButton("第一個(gè)按鈕"));f.add(newButton("第二個(gè)按鈕"));f.add(newButton("第三個(gè)按鈕"));f.add(newButton("第四個(gè)按鈕"));f.setSize(300,300);

f.setVisible(true);}}12.3布局圖形界面組件12.3.2BorderLayout邊界布局管理器

BorderLayout將容器分為東、南、西、北、中5個(gè)區(qū)域,按照上北下南左西右東的格局分布,各用一個(gè)方位單詞表示東:East南:South西:West北:North中:Center12.3布局圖形界面組件12.3.2BorderLayout邊界布局管理器以下例題表明Frame的默認(rèn)布局管理器是BorderLayoutimportjava.awt.*;publicclassTestBorderLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame("這是一個(gè)邊界布局管理器");f.add(newButton("第一個(gè)按鈕"));f.add(newButton("第二個(gè)按鈕"));f.setSize(300,300);f.setVisible(true);}}12.3布局圖形界面組件改進(jìn)后:importjava.awt.*;publicclassTestBorderLayout{publicstaticvoidmain(String

args[]){Framef=newFrame("這是一個(gè)邊界布局管理器");

f.setLayout(new

BorderLayout());

f.add("North",newButton("第一個(gè)按鈕"));

f.add("West",newButton("第二個(gè)按鈕"));f.setSize(300,300);

f.setVisible(true);}}12.3布局圖形界面組件12.3.3GridLayout網(wǎng)格布局管理器GridLayout網(wǎng)格布局管理器用于將容器區(qū)域劃分為一個(gè)矩形網(wǎng)格(區(qū)域),其組件按行和列排列,每個(gè)組件占一格。12.3布局圖形界面組件12.3.3GridLayout的構(gòu)造方法:GridLayout()//成一個(gè)單列的網(wǎng)格布局GridLayout(int

row,int

col)//生成一個(gè)設(shè)定行數(shù)和列數(shù)的網(wǎng)格布局GridLayout(int

row,int

col,int

horz,int

vert)//可以設(shè)置組件之間的水平和垂直間隔12.3布局圖形界面組件網(wǎng)格布局示例:importjava.awt.*;publicclassGridLayoutExample{publicstaticvoidmain(Stringargs[]){Framef=newFrame("網(wǎng)格布局演示!");Stringstr[]={"1","2","3","4","5","6","7","8","9"};

f.setLayout(new

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論