面向?qū)ο蟪绦蛟O計第15講 圖形用戶界面㈠_第1頁
面向?qū)ο蟪绦蛟O計第15講 圖形用戶界面㈠_第2頁
面向?qū)ο蟪绦蛟O計第15講 圖形用戶界面㈠_第3頁
面向?qū)ο蟪绦蛟O計第15講 圖形用戶界面㈠_第4頁
面向?qū)ο蟪绦蛟O計第15講 圖形用戶界面㈠_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第15講圖形用戶界面㈠/教學目標了解GUI掌握AWT窗口對象類掌握AWT窗口對象組件GUI設計概述圖形用戶界面(GUI,GraphicsUserInterface)是軟件產(chǎn)品與用戶交互的界面接口,是軟件產(chǎn)品中用戶可以看到并直接操作的部分。美觀大方、簡單易用的友好操作界面是軟件產(chǎn)品成功的重要因素。在Java中,AWT(AbstractWindowingTookit)是用來處理圖形最基本的方式,它可以用來創(chuàng)建Java的applet及窗口程序。AWT是Java早期的技術(shù),提供的組件有限,無法滿足應用程序多樣化組件的要求。為了彌補這個不足,Sun公司開發(fā)出Swing包,它有別于AWT,不依賴于特定的系統(tǒng)平臺,對外提供多樣化的組件及外觀,并且保持外觀風格的一致。

GUI組成元素分類容器容器是用來組織或容納其它界面成份和元素的組件。

Java提供了相應的容器類,例如,框架(J)Frame、面板(J)Panel及滾動面板(J)ScrollPanel等類??刂平M件控制組件是圖形用戶界面的基本單位,里面不再包含其它的成份。用戶通過控制組件與程序進行交互。用戶自定義成份除了上述的標準圖形界面元素外,編程人員還可以根據(jù)用戶的需要,使用各種字型字體和顏色設計一些幾何圖形、標志圖案等,它們被稱作用戶自定義成份。用戶自定義成份通常只起到顯示結(jié)果、裝飾美化的作用,不能響應用戶的動作,不具有交互功能。GUI的設計原則圖形用戶界面最重要的設計原則就是充分為用戶考慮。應該為用戶提供一個可用、功能性好、安全高效的界面。怎樣創(chuàng)建一個以用戶為中心的界面呢?首先,收集軟件用戶盡可能多的信息。用戶屬于哪個群體?用戶對計算機操作的熟悉程度?用戶年齡多大?教育程度如何?其次,需要設計用戶和計算機之間交換信息的形式。用戶如何向程序輸入信息:用鼠標從菜單選取,用鼠標點擊圖標,用快捷鍵,用鍵盤輸入還是語音命令;系統(tǒng)應該提供何種反饋:如當鼠標停留在對象上的時候,為了顯示它是可選的,對象要高亮度顯示,或至少要改變一個選項的顏色以表示它被選中了;用戶的選項,程序的反饋以及程序的輸出如何安排在屏幕上;如何創(chuàng)建想要的空間布局,如何使用Java內(nèi)建功能來布置圖形組件。GUI的設計步驟概要當設計好一個GUI的草案,如何判斷它是否是一個良好的以用戶為中心的設計呢?一般來說,好的界面應該讓用戶能夠控制,界面應該具有物理舒適感、易于學習、易于記憶,同時操作不易出錯。要定義一個GUI,一般需要以下三個步驟。1.創(chuàng)建這個GUI的組件,如按鈕,標簽,菜單等2.在窗口中排列這些組件。3.讓這些組件響應用戶輸入——事件處理。AWT窗口對象類簡介抽象窗口工具包(AWT,AbstractWindowingToolkit)為開發(fā)者提供建立圖形用戶界面的工具集。對Java運行的每一個平臺,AWT的組件通過它們各自的代理映射成平臺特定的組件。AWT適用于簡單的GUI程序。java.lang.Objectjava.awt.Componentjava.awt.Buttonjava.awt.Canvasjava.awt.Checkboxjava.awt.Choicejava.awt.Containerjava.awt.Labeljava.awt.Listjava.awt.Scrollbarjava.awt.TextComponentjava.awt.Windowjava.awt.Paneljava.awt.Dialogjava.awt.Framejava.awt.TextAreajava.awt.TextFieldAWT組件抽象超類標簽按鈕空白矩形區(qū)域復選框彈出式選擇菜單容器對象頂層窗口對話框帶有標題和邊界的頂層窗口面板標簽文本項列表滾動條文本多行區(qū)域文本單行區(qū)域文本AWT基本組件—FrameFrame類繼承Container類,是一個容器,用來容納按鈕、文本框等其他窗口組件,也可以容納其他容器對象。AWT在實際的運行過程中是調(diào)用所在平臺的圖形系統(tǒng),因此外觀依賴于所使用的操作系統(tǒng)Frame的外觀就像我們平常在windows系統(tǒng)下見到的窗口,有標題、邊框、菜單、大小等等。每個Frame的對象實例化以后,都是沒有大小和不可見的,因此必須調(diào)用setSize()來設置大小,調(diào)用setVisible(true)來設置該窗口為可見的。如果不再需要一個Frame時,應調(diào)用dispose方法撤消它Frame類大致框架publicclassFrameextendsWindowimplements

MenuContainer{

publicFrame()

public

Frame(Stringtitle)//重載的構(gòu)造方法

publicStringgetTitle()

public

void

setTitle(Stringtitle)

public

MenuBar

getMenuBar()

public

voidsetMenuBar(MenuBar

mb)

public

voiddispose() }//Ex9_1.javaimportjava.awt.*;publicclassEx9_1{

staticFramefrm=newFrame("第一個窗口程序!");//創(chuàng)建一個窗口

staticLabellab=newLabel("藍色的窗口");//創(chuàng)建一個標簽

publicstaticvoidmain(Stringargs[]){ frm.setSize(200,150);//設置窗口的高為200像素,寬為150像素

frm.setBackground(Color.BLUE);//設置窗口的背景為藍色

frm.setLocation(250,250);//設置窗口的位置

lab.setForeground(Color.yellow);//設置標簽的前景色

frm.add(lab);//將標簽對象加入窗口中

frm.setVisible(true);//顯示窗口

}}Frame示例程序分析這個例子中,在類Ex9_1里面定義了兩個靜態(tài) 的對象。一個是Frame窗口對象,在Java里面稱為一個容器,另外一個是Label標簽對象,它是一個AWT基本組件。通過setSize()、setBackground()、setLocation()等方法來改變窗口對象的狀態(tài)。怎樣才能使frm窗口中顯示lab對象呢?通常使用add()方法將一些基本組件加入到容器里面。對于這個窗口,可以使用最大化按鈕、最小化按鈕、拖拽邊框來改變窗口的大小,但是卻不能用點擊關(guān)閉按鈕的辦法來關(guān)閉窗口,即使使用ALT+F4也不行。怎樣才能實現(xiàn)窗口的關(guān)閉呢?Java將利用窗口關(guān)閉事件來進行處理,將在本章第5節(jié)介紹。AWT基本組件—Button按鈕是交互式界面常用的組件,用戶可以通過點擊按鈕控制程序的運行。單擊按鈕將產(chǎn)生ActionEvent事件

publicclassButtonextendsComponent{

publicButton()

public

Button(Stringlabel)

publicStringgetLabel()

publicvoid

setLabel(Stringlabel)

publicvoid

addActionListener(ActionListenerl)

publicvoid

removeActionListener(ActionListenerl)

}importjava.awt.*;publicclassEx9_3{

publicstaticvoidmain(Stringargs[]){ Framefrm=newFrame("按鈕對象的創(chuàng)建"); Buttonbtn1=newButton("按鈕一");//創(chuàng)建一個按鈕

Buttonbtn2=newButton();//創(chuàng)建一個按鈕

btn2.setLabel("按鈕二");//設置按鈕標題

frm.setTitle("窗口對象的創(chuàng)建"); frm.setLayout(null);//取消默認的布局

frm.setSize(200,150); frm.setLocation(250,250); frm.add(btn1); frm.add(btn2); btn1.setBounds(40,40,80,30);//設置按鈕的位置和大小

btn2.setBounds(40,80,80,30); frm.setVisible(true);//顯示窗口

}}程序分析:這個例子中,在類Ex9_3程序中創(chuàng)建了2個按鈕對象,通過Frame類對象frm的add()方法加入到窗口中。程序中出現(xiàn)的setLayout()方法是用來設置窗口內(nèi)組件的布局方式的。按鈕對象的setBounnds()方法是在Component類中定義的,作用是設置組件的位置和大小。Button示例AWT基本組件—Label標簽(label)是用來在窗口中顯示文字的文本框,也是在屏幕上顯示圖像或文本的一種最簡單和快捷的方式。單行非編輯文本組件,用于在一個版面中提供簡單的信息描述,靜態(tài)文字,無事件。publicclassLabelextendsComponet{ publicstaticfinalintLEFT,CENTER,RIGHT publicLabel() publicLabel(Stringtext) publicLabel(String

text,intalignment) publicStringgetText() publicvoidsetText(Stringtext)}importjava.awt.*;publicclassEx9_4{

publicstaticvoidmain(Stringargs[]){ Framefrm=newFrame("標簽對象的創(chuàng)建"); Labellab=newLabel(); frm.setLayout(null); frm.setSize(200,150); frm.setLocation(250,250); frm.setBackground(Color.YELLOW); lab.setText("黑體斜體字"); lab.setBackground(Color.PINK); lab.setForeground(Color.BLUE); lab.setFont(newFont("黑體",Font.ITALIC,20)); lab.setLocation(20,60); lab.setSize(120,30); frm.add(lab); frm.setVisible(true);

}}程序分析:這個例子中,在類Ex9_4程序中創(chuàng)建了2個標簽對象,分別使用setBackground()方法和setForeground()方法設置標簽的背景和前景顏色。

Label示例Color類用于封裝默認sRGB顏色空間的顏色Font用來規(guī)范組件所用的字體、大小和樣式等AWT基本組件—

TextField與TextAreaAWT中主要用來處理文字輸入組件的類。TextField用來處理單行文字,而TextArea可以做多行文字處理。這兩個類都繼承自TextComponent

類。TextComponent類:允許創(chuàng)建、檢索和修改文本的類。public

class

TextComponent

extendsComponent{ publicvoid

setText(Stringt) publicboolean

isEditable() publicvoid

setEditable(booleanb) publicStringgetSelectedText()

publicvoid

select(int

selectionStart,int

selectionEnd)

publicvoid

setCaretPosition(intposition)

publicint

getCaretPosition()

publicvoid

addTextListener(TextListenerl)

publicvoid

removeTextListener(TextListenerl) }importjava.awt.*;publicclassEx9_5{

publicstaticvoidmain(Stringargs[]){

Framefrm=newFrame("更改昵稱和密碼"); Labellab1=newLabel("用戶名"); Labellab2=newLabel("昵稱"); Labellab3=newLabel("密碼"); TextFieldtxf1=newTextField("student001"); TextFieldtxf2=newTextField("學生"); TextFieldtxf3=newTextField("123456"); frm.setSize(240,120); frm.setLayout(null); frm.setBackground(Color.yellow); lab1.setBounds(20,40,40,20); lab2.setBounds(20,60,40,20); lab3.setBounds(20,80,40,20); txf1.setBounds(80,40,120,20); txf2.setBounds(80,60,120,20); txf3.setBounds(80,80,120,20); txf1.setEditable(false); //設置不可編輯

txf3.setEchoChar('*'); //設置字符顯示為“*”

frm.add(lab1);frm.add(txf1);frm.add(lab2);frm.add(txf2);frm.add(lab3); frm.add(txf3); frm.setVisible(true);}}程序分析:這個例子中,在類Ex9_5程序中使用了3個文本框。其中第一個文本框使用setEditable()方法設置成不可編輯,第二個文本框默認,第三個文本框里面的輸入字符顯示成“*”。TextField示例importjava.awt.*;publicclassEx9_6{

publicstaticvoidmain(Stringargs[]) { Framefrm=newFrame("文本域"); TextAreatxa; txa=newTextArea("",8,14,TextArea.SCROLLBARS_BOTH); frm.setLayout(null); txa.setBounds(30,45,180,100); frm.setSize(240,180); frm.add(txa); frm.setVisible(true);

}}程序分析:這個例子中,在類Ex9_6程序中程序中,產(chǎn)生一個8行14列的文本框,這個文本框帶有垂直和水平滾動條。TextArea示例AWT基本組件—Checkbox、CheckboxGroup復選框可以讓用戶選取項目。通常分為復選和單選兩種。復選表示多個選項可以同時選擇,而單選擇表示一組選項中只能選擇一項。AWT中提供了Checkbox類來實現(xiàn)復選功能。而實現(xiàn)單選,則必須將多個復選對象利用CheckboxGroup類對象組成一組。請參考API文檔熟悉Checkbox,CheckboxGroup類的構(gòu)造方法和常用方法。importjava.awt.*;publicclassEx9_7{

publicstaticvoidmain(Stringargs[]){ Framefrm=newFrame("復選框"); Labellab=newLabel("您喜歡的水果?"); Checkboxckb1=newCheckbox("蘋果",true); Checkboxckb2=newCheckbox("梨子",true); Checkboxckb3=newCheckbox("桔子"); frm.setSize(200,150); frm.setLayout(null); frm.setBackground(Color.yellow); lab.setBounds(20,30,140,20); ckb1.setBounds(20,50,140,20); ckb2.setBounds(20,70,140,20); ckb3.set

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論