圖形用戶界面程序設(shè)計(jì)(一)_第1頁
圖形用戶界面程序設(shè)計(jì)(一)_第2頁
圖形用戶界面程序設(shè)計(jì)(一)_第3頁
圖形用戶界面程序設(shè)計(jì)(一)_第4頁
圖形用戶界面程序設(shè)計(jì)(一)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第14講 圖形用戶界面程序設(shè)計(jì)(一)o主要內(nèi)容n組件與容器n布局與布局管理器2圖形用戶界面(GUI)oJava中支持圖形用戶界面編程的包nAWT(Abastract Window Toolkit) 早期版本的圖形編程包,平臺(tái)相關(guān)性較強(qiáng)。缺少剪貼板和打印支持功能。nSwing 基于AWT基礎(chǔ)之上的新的圖形編程包,功能更強(qiáng)大,平臺(tái)獨(dú)立性更好。建議在進(jìn)行java圖形用戶界面編程時(shí)使用Swing。3組件和容器o組件是圖形用戶界面的組成部分,如命令按鈕就是一種組件,窗口也是一種組件。o如果一個(gè)組件上面還可以放置其他組件,那這個(gè)組件就叫做容器。o組件按其用途可分為:頂層容器、一般容器、專用容器和基本控件

2、?;究丶挚煞譃椴豢删庉嫿M件(如標(biāo)簽)和可編輯組件(如文本框)。4容器o頂層容器頂層容器不能放置在其他容器上。頂層容器主要有三種:n小應(yīng)用程序(Applet/JApplet):用于設(shè)計(jì)可嵌入網(wǎng)頁中運(yùn)行的程序的界面。n對(duì)話框(Dialog/JDialog):用于在程序中顯示提示信息或輸入少量信息。n窗體/框架(Frame/JFrame):用于設(shè)計(jì)應(yīng)用程序的圖形用戶界面。5容器o一般容器(中間容器)可以放置在其他容器上的容器。n面板(JPanel)n滾動(dòng)窗格(JScrollPane)n分裂窗格(JSplitPane)n選項(xiàng)卡窗格(JTabbedPane)n工具條(JToolBar)6容器o專用容

3、器起特殊作用的容器。n內(nèi)部框架(JInternalFrame)n分層窗格(JLayeredPane)n根窗格(JRootPane)o根窗格又由玻璃窗格、分層窗格、內(nèi)容窗格和菜單窗格組成7圖形用戶界面程序設(shè)計(jì)涉及的相關(guān)類o組件類n提供各種圖形用戶界面組件。這些類包含在java.awt和javax.swing包中。 o布局類n實(shí)現(xiàn)組件在容器上的各種排列方式。這些類一般在java.awt包中。 o事件處理類。n實(shí)現(xiàn)對(duì)各種事件的響應(yīng)。包含在java.awt.event和javax.swing.event包中。o其他類n處理顏色、8體驗(yàn)圖形用戶界面編程import javax.swing.* ;impo

4、rt java.awt.*;public class ExGui public static void main( String args )JFrame jf ;JButton jb1 ;JButton jb2 ;jf = new JFrame(我的第一個(gè)圖形用戶界面程序) ;jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /指定關(guān)閉方式j(luò)f.setLayout(new FlowLayout(); /指定組件在窗口上的布局方式j(luò)b1 = new JButton(Press Me);jb2 = new JButton(Do not pres

5、s me!);jf.add(jb1) ; /在窗口上增加按鈕組件jf.add(jb2);jf.pack( );jf.setVisible(true) ; /顯示窗口9圖形用戶界面編程的一般步驟o創(chuàng)建組件,完成圖形用戶界面布局o編寫事件處理程序,通過事件處理機(jī)制響應(yīng)用戶的操作,完整指定任務(wù)。10頂層容器JFrame(帶有標(biāo)題并可改變大小的頂層容器)o創(chuàng)建JFrame對(duì)象npublic JFrame(String title)o設(shè)置關(guān)閉框架的行為npublic void setDefaultCloseOperation(int operation)o設(shè)置框架的大小npublic void setS

6、ize(int width, int height)o設(shè)置框架是否可見npublic void setVisible(boolean b)o設(shè)置布局方式npublic void setLayout(LayoutManager mgr)o添加組件nPublic Compnent add(Component comp)11頂層容器JFrameo取得JFrame對(duì)象的內(nèi)容窗格npublic Container getContentPane()o注:往框架上放組件就是往其內(nèi)容窗格上放組件。以下兩條命令作用等價(jià):njf.add(new JButton(“OK”);nJf.getContentPane()

7、.add (new JButton(“OK”);12JPanel容器(必須放置在其他容器上)o通過在JPanel對(duì)象上放置組件,再將JPanel對(duì)象放置在其他容器上來實(shí)現(xiàn)復(fù)雜的用戶界面布局。常用方法如下:o創(chuàng)建JPanel對(duì)象npublic JPanel()o設(shè)置布局方式npublic void setLayout(LayoutManager mgr)o設(shè)置面板的大小npublic void setSize(int width, int height)o設(shè)置背景顏色npublic void setBackground(Color color);o添加組件nPublic Compnent add

8、(Component comp)13布局管理器(Layout Manager)o容器中組件的位置和大小通常由布局管理器來控制。o每個(gè)容器都由一個(gè)缺省的Layout Manager ,可通過setLayout( )方法改變。oJava提供的布局管理器nFlowLayoutnBorderLayoutnGridLayoutnCardLayoutnGridBagLayout14Layout Manager(布局管理器)布局管理器)15Flow Layout Manager組件采用從左到右,從上到下逐行擺放。組件采用從左到右,從上到下逐行擺放。 Flow LayoutOpenCloseok Flow L

9、ayoutOpenCloseok setLayout(new FlowLayout(int align,int hgap, int vgap)FlowLayout.LEFTFlowLayout.RIGHTFlowLayout.CENTER缺省是居中缺省是居中16Border Layout ManagerBorder Layout 分分5個(gè)區(qū):個(gè)區(qū):BorderLayoutNorthWestEastSouthCenter17BorderLayout ManageroBorder Layout 分5個(gè)區(qū)BorderLayoutNorthWestEastSouthCenter18Border Lay

10、out oBorderLayout的構(gòu)造方法:npublic BorderLayout( ) -組件間無縫隙npublic BorderLayout(int hgap,int vgap)o例;設(shè)置容器c的布局為BorderLayoutnc.setLayout(new BorderLayout();o往容器中加入組件的方法:nadd(組件對(duì)象, BorderLayout.方位常量)n方位常量:CENTER, NORTH,SOUTH,WEST,EASTo例:例:TestBorderLayout.java19GridLayouto把容器分成網(wǎng)格,n行*m列。組件從左到右,從上到下填充。o構(gòu)造與設(shè)置布

11、局管理器:nsetLayout(new GridLayout(int rows, int cols);20Grid123456GridLayout例:例: f = new Frame(“Grid”) ;f.setLayout(new Gridlayout(3,2) ;b1 = new Button(“1”) ;b2 = new Button(“2”);b3 = new Button(“3”); b4 = new Button(“4”); b5 = new Button(“5”); b6 = new Button(“6”); f.add(b1);f.add(b2); f.add(b3); f.a

12、dd(b4); f.add(b5); f.add(b6); f.pack( ) ;f.setVisible(true) ;21CardLayout把組件象一系列卡片一樣疊放,一個(gè)時(shí)刻只能把組件象一系列卡片一樣疊放,一個(gè)時(shí)刻只能看到最上面的。看到最上面的。22GridBagLayout23如何選擇布局管理器o要使組件盡量充滿容器空間nBorderLayoutnGridBagLayouto要使組件以自然大小緊湊的在一行中顯示nFlowLayout o組件大小相同,并且成行或成列顯示nGridLayout24Component類提供的功能類提供的功能 支持基本的支持基本的 drawing 。pain

13、t(), update(), repaint() 方法顯示組件自身。方法顯示組件自身。 事件處理。事件處理。通用的事件處理方法:通用的事件處理方法: handleEvent() ;特定的事件處理方法,如;特定的事件處理方法,如 action() 組件外觀控制組件外觀控制字體、顏色字體、顏色 圖象處理圖象處理Canvases以及多數(shù)以及多數(shù)container能夠顯示圖象能夠顯示圖象 屏幕上組件大小與位置控制屏幕上組件大小與位置控制 preferredSize() , minimumSize()方法可以通知布局管理器組件的方法可以通知布局管理器組件的最佳與最小的大小最佳與最小的大小25Canvas

14、es 26Checkbox 與與 CheckboxGroup 27Panel p1, p2;Checkbox cb1, cb2, cb3; /These are independent checkboxes.Checkbox cb4, cb5, cb6; /These checkboxes are part of a group.CheckboxGroup cbg;cb1 = new Checkbox(); /Default state is off (false).cb1.setLabel(Checkbox 1);cb2 = new Checkbox(Checkbox 2);cb3 = ne

15、w Checkbox(Checkbox 3);cb3.setState(true); /Set state to on (true). . .cbg = new CheckboxGroup();cb4 = new Checkbox(Checkbox 4, cbg, false); /initial state: off (false)cb5 = new Checkbox(Checkbox 5, cbg, false); /initial state: offcb6 = new Checkbox(Checkbox 6, cbg, false); /initial state: off28Choi

16、ce29 /.Where instance variables are defined: Choice choice; /pop-up list of choices /.Where initialization occurs: choice = new Choice(); choice.addItem(ichi); choice.addItem(ni); choice.addItem(san); choice.addItem(yon); label = new Label(); setLabelText(choice.getSelectedIndex(), choice.getSelecte

17、dItem(); .30Dialog31List 32 ./Where instance variables are declared: TextArea output; List spanish, italian; ./Where initialization occurs: /Build first list, which allows multiple selections. spanish = new List(4, true); /prefer 4 items visible spanish.addItem(uno); spanish.addItem(dos); spanish.ad

18、dItem(tres); spanish.addItem(cuatro); spanish.addItem(cinco); spanish.addItem(seis); spanish.addItem(siete); /Build second list, which allows one selection at a time. italian = new List(); /Defaults to none visible, only one selectable italian.addItem(uno); italian.addItem(due); italian.addItem(tre); italian.addItem(quattro); italian.addItem(cinque); italian.addItem(sei); italian.addItem(sette); . . .33Scrollbar 34ScrollPane Scroll Pane 中放入中放入canvas35TextArea and TextField36/Where instance variables are defined:TextField textField;TextArea textArea;public void in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論