《Java用戶界面》PPT課件
《《Java用戶界面》PPT課件》由會員分享,可在線閱讀,更多相關《《Java用戶界面》PPT課件(45頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第 7講 Java用 戶 界 面( AWT篇 ) * 溫 故 *類成員的訪問權限 public、protected、友好、private子類繼承,子類繼承父類的成員在同一包:子類可繼承父類非私有成員不同包:子類可繼承父類的protcted和public成員。變量的聲明、變量的作用域、變量的隱藏方法的聲明、參數(shù)的傳值方式、方法的覆蓋、構造函數(shù)多態(tài)、對象的上轉型對象父類變量引用子類對象。抽象類與接口 本 講 要 點 AWTSwingSWT布局管理器的使用 AWTl AWTn抽象窗口工具包AWT (Abstract Window Toolkit) 是 Java 提供的建立圖形用戶界面GUI (Gra
2、phics User Interface)工具集,可用于生成現(xiàn)代的、鼠標控制的圖形應用接口,并且可以無需修改,就可以在各種軟硬件平臺上運行。n AWT可用于Java的applet和applications中, AWT設計的初衷是支持開發(fā)小應用程序的簡單用戶界面。n它支持圖形用戶界面編程的功能包括:用戶界面組件、事件處理模型、圖形和圖像工具(包括形狀、顏色和字體類)和布局管理器,可以進行靈活的窗口布局而與特定窗口的尺寸和屏幕分辨率無關。 GUI與 AWT在java中,AWT是用來處理圖形最基本的方式,它可以用來創(chuàng)建java的applet和窗口。AWT包提供4大類功能:1、圖形界面組件,如:窗口、
3、按鈕、菜單等2、2D圖形繪制組件,如:直線、圓形。3、布局對象:用來安排圖形界面組件的位置。4、事件處理對象,用來處理圖形界面組件所觸發(fā)的事件。圖形用戶界面(Graphics User Interface 簡稱GUI)通過提供菜單、按鈕、標簽標識、鼠標等,完成對計算機發(fā)出指令、啟動應用程序等操作任務。 java.awt包中提供了GUI設計所使用的類和接口,提供了各種用于GUI設計的標準類,圖1顯示了AWT中主要類之間的關系。由圖可知,AWT中的類按其功能的不同可分為5大類。 圖1 AWT類層次 基 本 GUI組 件 類 ( Component) Java的圖形用戶界面的最基本組成部分是組件(C
4、omponent),組件是一個可以以圖形化的方式顯示在屏幕上并能與用戶進行交互的對象,例如一個按鈕,一個標簽等。組件不能獨立地顯示出來,必須將組件放在一定的容器中才可以顯示出來。用來提供人機交互的基本控制界面 類java.awt.Component是許多組件類的父類,Component類中封裝了組件通用的方法和屬性,如圖形的組件對象、大小、顯示位置、前景色和背景色、邊界、可見性等,因此許多組件類也就繼承了Component類的成員方法和成員變量,這些成員方法是許多組件都共有的方法,常見的成員方法如表1所示 方法名方法功能void setBackground(Color c)設置組件的背景顏色v
5、oid setEnabled(boolean b)設置組件是否可用void setFont(Font f)設置組件的文字void setForeground(Color c)設置組件的前景顏色void setLocation(int x, int y)設置組件的位置void setName(String name)設置組件的名稱void setSize()設置組件的大小 void setVisible(boolean b)設置組件是否可見boolean hasFocus()檢查組件是否擁有焦點int getHeight()返回組件的高度int getWidth()返回組件寬度表1 Compon
6、ent類常用方法 容 器 類 ( Container )容器Container也是一個類,它允許其他的組件被放置在其中。容器本身也是一個組件,具有組件的所有性質,但是它的主要功能是容納其它組件和容器。容器java.awt.Container是Component的子類,一個容器可以容納多個組件,并使它們成為一個整體。容器可以簡化圖形化界面的設計,以整體結構來布置界面。所有的容器都可以通過add()方法向容器中添加組件。 Container常用的有三個主要類型:窗口(Window)、面板(Panel)和 Applet,常用的有Panel, Frame, Applet 布局管理類容器里組件的位置和大
7、小是由布局管理器決定的,每個容器都有一個布局管理器,當容器需要對某個組件進行定位或判斷其大小尺寸時,就會調用其對應的布局管理器 事件處理類在JDK1.1及其以后的版本中,AWT采用委托事件模型進行事件處理,委托事件模型包括事件源、事件和事件監(jiān)聽器,詳細內容請參閱第7章 基本圖形類用于構造圖形界面的類,如字體類(Font)、繪圖類(Graphics)、圖像類(Image)和顏色類(Color)等 Swing Swing的含義:是Java在開發(fā)這個新的圖形界面項的項目名稱。 AWT是Swing的基礎。Swing的產生主要原因就是AWT不能滿足圖形化用戶界面發(fā)展的需要。 Swing是用Java實現(xiàn)的
8、輕量級( light-weight)組件 Swing是由100%純Java實現(xiàn)的,Swing組件是用Java實現(xiàn)的輕量級( light-weight)組件,沒有本地代碼,不依賴操作系統(tǒng)的支持,這是它與AWT組件的最大區(qū)別。由于AWT組件通過與具體平臺相關的對等類(Peer)實現(xiàn),因此Swing比AWT組件具有更強的實用性。Swing在不同的平臺上表現(xiàn)一致,并且有能力提供本地窗口系統(tǒng)不支持的其它特性。 Swing采用了一種MVC的設計范式 Swing外觀感覺采用可插入的外觀感覺(Pluggable Look and Feel,PLpublic class MyFrame extends Fram
9、epublic static void main(String args )MyFrame fr = new MyFrame(Hello Out There!); /構造方法fr.setSize(200,200); /設置Frame的大小,缺省為(0,0)fr.setBackground(Color.red); /設置Frame的背景,缺省為紅色fr.setVisible(true); /設置Frame為可見,缺省為不可見public MyFrame (String str)super(str); /調用父類的構造方法 Pane類import java.awt.*;public class F
10、rameWithPanel extends Framepublic FrameWithPanel(String str)super(str); public static void main(String args)FrameWithPanel fr = new FrameWithPanel(Frame with Panel);Panel pan=new Panel();fr.setSize(200,200);fr.setBackground(Color.red); /框架fr的背景顏色設置為紅色fr.setLayout(null); /取消布局管理器 pan.setSize(100,100)
11、;pan.setBackground(Color.yellow); /設置面板pan的背景顏色為黃色fr.add(pan); /用add方法把面板pan添加到框架fr中fr.setVisible(true); 創(chuàng)建一個黃色面板和一個青色面板,將它們并排添加到標題為Panel Usage Demo,大小為270200的框架窗口內。 程序的運行結果見圖 。 使 用 圖 形 用 戶 界 面 AWT的 組 件Label類的構造方法主要功能Label()創(chuàng)建一個沒有文字的標簽Label(Strng str)創(chuàng)建一個以str為文字的標簽Label(String str,int align)創(chuàng)建一個以str
12、為文字的標簽,并以align 為對齊方式LEFT CENTER RIGHT 表示左中右Label類的方法主要功能int getAligment()返回標簽內文字的對齊方式 void setAligment(int align)設置標簽內文字的對齊方式String getText()獲得標簽內的文字void setText(String text)設置標簽內的文字Java.awt.Label 的方法 Color類用來設置顏色,構造方法有兩個Color(float r,float g,float b);和Color(int r,int g,int b);其中r、g、b表示紅綠藍3色float 型取
13、值范圍0.01.0;int 型取值范圍0-256標簽組件是用來在窗口中顯示文字的組件,由Label類來創(chuàng)造/ 在窗口中的指定位置創(chuàng)建一個標簽import java.awt.*;public class Window11_3 public static void main(String args) Frame fra=new Frame(這是創(chuàng)建標簽的程序 ); Label b1=new Label(); / 創(chuàng)建一個空標簽 fra.setBounds(0,0,300,200); b1.setText(歡迎使用JAVA語言);/為標簽添加文字 b1.setAlignment(Label.CENT
14、ER);/設置標簽在窗口中央位置 b1.setBackground(Color.blue);/引用Componentlei的方法設置標簽背景顏色 b1.setForeground(Color.red); /引用Componentlei的方法設置標簽中的文字顏色 fra.add(b1) ; fra.setVisible(true); 創(chuàng)建大小相同、背景色不同、顯示內容與文本的對齊方式各不相同的三個標簽,并將它們左端對齊,豎向排列在一個300200大小的窗口內。 按 鈕 組 件按鈕組件提供用戶快速啟動某一動作的方法, 通過點擊鼠標或按下鍵盤某鍵完成一定的操作。由java.awt類庫的Button類
15、創(chuàng)建。Button類的構造方法主要功能Button()創(chuàng)建一個沒有標題的按鈕 Button(String str)創(chuàng)建一個以str 為標題的按鈕Button類的方法主要功能String getLabel() 獲得按鈕的標題void setLabel(String str)獲得設置按鈕的標題為str import java.awt.*; / 創(chuàng)建 按鈕public class Window11_4 public static void main(String args) Frame fra=new Frame( 創(chuàng)建按鈕程序 ); Button but=new Button(push me);
16、/ 創(chuàng)建一個按鈕 fra.setBounds(0,0,300,200); fra.add(but) ; /將按鈕添加到窗口中 fra.setVisible(true); /顯示窗口 import java.awt.*; / 創(chuàng)建一個給定大小尺寸的 按鈕public class Window11_5 public static void main(String args) Frame fra=new Frame( 創(chuàng)建按鈕程序 ); Button but=new Button(push me); / 創(chuàng)建一個按鈕 fra.setBounds(0,0,300,200); fra.setLayout
17、(null);/關閉頁面設置 but.setBounds(50,50,100,50);/設置按鈕的大小 fra.add(but) ; /將按鈕添加到窗口中 fra.setVisible(true); /顯示窗口 創(chuàng)建四個大小相同的6030尺寸的按鈕,依照其標題的意義分別安置到上、下、左、右四個方位,使它們呈十字形,并對稱地排放到280270的窗口中心。 文 本 框文本框是用來在窗口中顯示文字的矩形框,這些文字可以被用戶編輯。文本框可以用來輸入文字、編輯文字并顯示輸入的文字、讀取用戶輸入的文字。由TextField類來創(chuàng)建。TextField類的構造方法主要功能TextField()創(chuàng)建一個空的
18、文本框TextField(int colnmns)創(chuàng)建一個空的文本框,具有指定的列TextField(String text)創(chuàng)建一個包含有”text” 內容的文本框TextField(String text,int colnmns)創(chuàng)建一個具有指定列且包含內容的文本框TextField類的方法主要功能 String getText()獲得文本框的內容int getColumns()獲得文本框的列數(shù)void setText(String text)設置文本框的內容為text void setColumns(int columns)設置文本框的列數(shù) / 創(chuàng)建文本框 import java.awt
19、.*;public class Window11_6 public static void main(String args) throws Exception Frame fra=new Frame( 創(chuàng)建文本框程序 ); TextField txt1=new TextField(10 ); TextField txt2=new TextField(10); fra.setBounds(0,0,300,200); fra.setLayout(null);/關閉頁面設置 txt1.setBounds(50,50,130,20);/設置文本框的大小 txt2.setBounds(50,70,13
20、0,20); fra.add(txt1) ; /將 文本框添加到窗口中 fra.add(txt2) ; fra.setVisible(true); /顯示窗口 / System.in.read(); / System.exit(0); 實現(xiàn)如圖所示的身份驗證界面。其中窗口大小為300200,標簽尺寸為7020,文本域尺寸為10020,按鈕尺寸為10030. 布局管理器決定容器中組件的尺寸和位置 java.awt包中共定義了五種布局編輯類,每個布局編輯類對應一種布局策略,分別是 FlowLayout(流式布局) BorderLayout(邊界布局) GridLayout(格式布局) GridBa
21、gLayout(格袋布局) LayoutManager 布 局 管 理 器 使 用 布 局 管 理 器 布 局 界 面 的 方 法為創(chuàng)建容器的布局管理器,可調用setLayout (LayoutManager, layout)方法,以布局類的實例為參數(shù)。例如: FlowLayout flowLayout=new FlowLayout();/創(chuàng)建流布局類對象 Panel panelObj=new Panel();/創(chuàng)建容器類對象 panelObj.setLayout(flowLayout); /panel對象調用以FlowLayout對象調用以FlowLayout布局類對象為參數(shù)的setLayo
22、ut()方法,設置布局。 在pane()的構造方法中,有Pane(LayoutManager layout)構造符,在構造面板容器的同時指定布局管理器,因此上面可寫成如下: FlowLayout flowLayoutObj=new FlowLayout(); Panel panelObj=new Panel(flowLayoutObj);/以流布局類對象為 參數(shù) FlowLayout FlowLayout是一種最基本的布局管理器是 java.awt.Applet、java.awt.Panel 和 javax.swing.JPanel的默認布局方式在容器中,從左到右依次放置GUI組件當組件排到容
23、器一行的末尾時,則從下一行開始接著排列組件每行組件的對齊方式可以是: 左對齊、中間(默認對齊方式)和右對齊 構造方法主要下面幾種: FlowLayout(FlowLayout.RIGHT,20,40);/*第一個參數(shù)表示組件的對齊方式,指組件在這一行中的位置是居中對齊、居右對齊還是居左對齊,第二個參數(shù)是組件之間的橫向間隔,第三個參數(shù)是組件之間的縱向間隔,單位是象素。*/ FlowLayout(FlowLayout.LEFT); /居左對齊,橫向間隔和縱向間隔都是缺省值5個象素FlowLayout(); /缺省的對齊方式居中對齊,橫向間隔和縱向間隔都是缺省值5個象素 import java.aw
24、t.*;public class ExGuiprivate Frame f;private Button b1;private Button b2;public static void main(String args)ExGui that = new ExGui();that.go();public void go()f = new Frame(GUI example);f.setLayout(new FlowLayout(); /設置布局管理器為FlowLayoutb1 = new Button(Press Me); /按鈕上顯示字符Press Meb2 = new Button(Dont
25、 Press Me); f.add(b1);f.add(b2);f.pack(); /緊湊排列,其作用相當于setSize(),即讓窗口盡量小,小到剛剛能夠包容住b1、b2兩個按鈕f.setVisible(true); 創(chuàng)建六個TextField組件,組件的內容初始化為江南六大著名水鄉(xiāng)古鎮(zhèn)的簡介,將組件添加到300150大小的應用窗口中,應用窗口使用FlowLayout管理器方案。 BorderLayout BorderLayout是容器FrameJFrame和JApplet的默認布局方式將容器分成五個區(qū)域, NORTH (頂部) SOUTH (底部) WEST (左側) EAST (右側)
26、CENTER (中間)每個區(qū)域最多只能1個組件 構造方法: BorderLayout( hGap, vGap ); hGap 區(qū)域間的水平間隙 vGap -區(qū)域間的豎直間隙上面兩個數(shù)據(jù)的默認值是0添加組件 myContainer.add( component, position ) component 需要加入到容器中的組件 positions (BorderLayout.NORTH) NORTH, SOUTH, EAST, WEST, CENTER import java.awt.*;public class buttonDirpublic static void main(String a
27、rgs)Frame f = new Frame(BorderLayout);f.setLayout(new BorderLayout();f.add(North, new Button(North);/第一個參數(shù)表示把按鈕添加到容器的North區(qū)域f.add(South, new Button(South);/第一個參數(shù)表示把按鈕添加到容器的South區(qū)域f.add(East, new Button(East); /第一個參數(shù)表示把按鈕添加到容器的East區(qū)域f.add(West, new Button(West);/第一個參數(shù)表示把按鈕添加到容器的West區(qū)域f.add(Center, ne
28、w Button(Center);/第一個參數(shù)表示把按鈕添加到容器的Center區(qū)域f.setSize(200,200);f.setVisible(true); GridLayout GridLayout布局管理器GridLayout按行與列將容器等分成網(wǎng)格每個組件占用具有相同寬度和高度的網(wǎng)格添加組件占用網(wǎng)格的順序: 從上到下,從左到右當一行滿了,則繼續(xù)到下一行,仍然是從左到右 GridLayout的構造函數(shù):1) GridLayout(),創(chuàng)建一個默認為1行的網(wǎng)格布局管理器,行布局中所有組件大小相同。2) GridLayout(int rows, int cols),創(chuàng)建一個帶指定行數(shù)和列數(shù)
29、的網(wǎng)格布局管理器,布局中所有組件大小相同。3) GridLayout(int rows, int cols,int hgap, int vgap),創(chuàng)建一個帶指定行數(shù)、列數(shù)、水平與垂直間距的網(wǎng)格布局管理器,布局中所有組件大小相同。 import java.awt.*;public class ButtonGrid public static void main(String args) Frame f = new Frame(GridLayout);f.setLayout(new GridLayout(3,2); /容器平均分成3行2列共6格f.add(new Button(1); /添加到第
30、一行的第一格f.add(new Button(2); /添加到第一行的下一格f.add(new Button(3); /添加到第二行的第一格f.add(new Button(4); /添加到第二行的下一格f.add(new Button(5); /添加到第三行的第一格f.add(new Button(6); /添加到第三行的下一格f.setSize(200,200);f.setVisible(true); 將華東六省一市的名稱作為按鈕組件標題,將這些按鈕添加到大小為300200的應用窗口中,窗口應用3行2列的網(wǎng)格布局管理器方案。 GridBagLayout GridBagLayout布局管理器
31、是java.awt包中最靈活、同時又是最復雜的一種布局管理器,它類似于網(wǎng)格布局。 GridBagLayout布局管理器把組件組織成長方形的網(wǎng)格,使用這種布局,可靈活地把組件放在長方形網(wǎng)格的任何行和列中,它也允許特定的組件跨多行和多列。 GridBagLayout類只有一個不帶任何參數(shù)的構造函數(shù),僅僅創(chuàng)建一個布局。為了指出組件的位置和尺寸的約束,必須使用GridBagContraints類對象,通過調用GridBagContraints類對象的屬性變量限制組件的位置和尺寸。創(chuàng)建GridBagConstraints: GridBagContraints gbcObj=new GridBagCons
32、traints();/創(chuàng)建 GridBagContraints類的屬性如下1) gridx、gridy,指出組件所在的列數(shù)和行數(shù);兩者組成長方形網(wǎng)格(單元),從左到右,gridx的值由小到大,從上到下gridy的值由小至大。2) gridwidth、gridheight,指出組件跨的行數(shù)和列數(shù);默認方式,組件的大小等于它顯示區(qū)域的大小(顯示網(wǎng)格的區(qū)域),但是可以使用屬性gridwidth、gridheight來擴大顯示區(qū)域的大小。缺省值為1。如果指定了gridx和gridy,則組件不能實現(xiàn)跨行或跨列;如果不指定gridx和gridy屬性,則類似于網(wǎng)格布局,組件按加入到容器的布局組件。 3) a
33、nchor,指出組件在網(wǎng)格上的方位。其默認值是CENTER,居中放置。anchor的有效值為: GridBagConstraints.NORTH(北) GridBagConstraints.SOUTH(南) GridBagConstraints.WEST(西) GridBagConstraints.EAST(東) GridBagConstraints.NORTHWEST(西北) GridBagConstraints.NORTHEAST(東北) GridBagConstraints.SOUTHWEST(西南) GridBagConstraints.SOUTHEAST(東南) GridBagCon
34、straints.CENTER(中,默認) NORTHNORTH WEST CENTERWEST SOUTHSOUTH WEST EASTNORTH EASTSOUTH EAST 4) fill,是否充滿網(wǎng)格,其有效值為: GridBagConstraints.BOTH(填滿整個區(qū)域); GridBagConstraints.HORIZONTAL(填滿水平方向的顯示區(qū)域,不改變高度) GridBagConstraints.VERTICAL(填滿垂直方向的顯示區(qū)域,不改變高度) GridBagConstraints.NONE(默認,不改變尺寸)5) weightx,weighty,是否拉長組件。
35、用于指明當容器時,如何 行、列間分配額外的空間。它取值0.0或1.0。默認為0.0,表明每個網(wǎng)格的顯示區(qū)域不變。 Frame f=new Frame(); f.setLayout(new GridBagLayout(); GridBagConstraints constraints=new GridBagConstraints(); Label lb=new Label( 姓名); constraints.fill=GridBagConstraints.NONE; constraints.anchor=GridBagConstraints.CENTER; constraints.weightx
36、=0; constraints.weighty=0; constraints.gridx=0; constraints.gridy=0; constraints.gridwidth=1; constraints.gridheight=1; constraints.insets=new Insets(10,10,10,10); f.add(lb,constraints); 布局客戶信息界面創(chuàng)建如上圖所示界面,包括客戶名稱、電話號碼、性別和年齡、錄入等。創(chuàng)建過程:識別所需的布局管理器類型 識別各控件在布局中的特性。 小 結 1Frame是一個頂級窗口。Frame的缺省布局管理器為BorderLayout。2Panel 無法單獨顯示,必須添加到某個容器中。 Panel 的缺省布局管理器為FlowLayout。3當把Panel 作為一個組件添加到某個容器中后,該Panel 仍然可以有自己的布局管理器。因此,可以利用Panel 使得BorderLayout 中某個區(qū)域顯示多個組件,達到設計復雜用戶界面的目的 。4如果采用無布局管理器 setLayout(null),則必須使用setLocation(),setSize(),setBounds()等方法手工設置組件的大小和 位置,此方法會導致平臺相關,不鼓勵使用。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020高考化學熱門專題:原理綜合透題型析課件
- 現(xiàn)代中國的教育說課稿課件
- 蒸餾和熔點沸點的測定和溫度計的校正
- 臨時起搏器的護理
- 恒成實業(yè)網(wǎng)絡推廣方案
- 勿為小惡優(yōu)秀課件-粵教版
- 人教版初中地理七年級上冊人口與人種課件7
- 誡子書課件文檔
- 軟件測試計劃書與測試用例編寫課件
- 人教版五年級數(shù)學上冊課件3小數(shù)除法第2課時除數(shù)是整數(shù)的小數(shù)除法課件
- 太白酒2002年全國推廣營銷企劃案
- 滬教版小學語文三年級上冊《小狗杜克》課件1
- 我們的情感世界課件7-人教版
- 擔保產品案例講解及其風險控制設計(含法律相關規(guī)范)
- 【部編版】四年級語文上冊《2.走月亮》ppt課件