Java09(GUI編程).ppt_第1頁
Java09(GUI編程).ppt_第2頁
Java09(GUI編程).ppt_第3頁
Java09(GUI編程).ppt_第4頁
Java09(GUI編程).ppt_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、圖形用戶界面編程,本章內(nèi)容,GUI編程介紹 AWT的體系結(jié)構(gòu) 布局管理 事件處理,JAVA GUI編程簡介,通過圖形用戶界面GUI (graphics user interface ),用戶和程序之間可以方便地進行交互。在Java語言中提供了專門的類庫來生成各種標準圖形界面元素和各種處理圖形界面的各種事件,以實現(xiàn)圖形用戶界面的設(shè)計 目前在JAVA中實現(xiàn)圖形用戶界面主要有兩種技術(shù): AWT和Swing,AWT介紹,AWT(Abstract Window Toolkit),抽象窗口工具包,SUN公司提供的用于圖形界面編程(GUI)的類庫。基本的AWT庫處理用戶界面元素的方法是把這些元素的創(chuàng)建和行為

2、委托給每個目標平臺上(Windows、Unix、Macintosh等)的本地GUI工具進行處理。例如:如果我們使用AWT在一個Java窗口中放置一個按鈕,那么實際上使用的是一個具有本地外觀和感覺的按鈕。這樣,從理論上來說,我們所編寫的圖形界面程序能運行在任何平臺上,做到了圖形界面程序的跨平臺運行。 缺點:控件太少,功能簡單,難以實現(xiàn)復雜的應用,SWING介紹,SWING組件是第二代GUI組件,是JFC(Java Foundation Class)的一部分,它完全由JAVA代碼實現(xiàn),不調(diào)用本地代碼,與平臺無關(guān),是一個輕量級的組件。 Swing組件包含有從按鈕到可分割窗口的所有GUI類在內(nèi)的完整的

3、組件包, 允許用戶選擇自己喜歡的界面風格, 提供了多種與用戶交互的手段,為用戶提供高質(zhì)量的2D圖形、圖像和文本的API, 支持對象的拖放 Swing 組件全部是由純Java編寫的,功能強大,如 按鈕和標簽可以顯示圖像或圖片 組件不一定是長方形 Swing 使用的包: Javax.Swing Swing所有組件都以J開頭 Swing的缺點:體系結(jié)構(gòu)復雜,系統(tǒng)開銷大,Container,Window,Panel,Component,Frame,Dialog,FileDialog,Applet,AWT的體系結(jié)構(gòu),Button,Menu,Checkbox,Textfield,AWT的體系結(jié)構(gòu),容器類(

4、Container) Window Dialog Frame Panel 控件類(Component) Canvas 畫布 Button 按鈕 Checkbox 復選框 Choice 選擇框 Label 標簽 List 列表框 Menu 菜單 Scrollbar 滾動條 TextArea 多行文本區(qū) TextField 單行文本區(qū) 布局類(Layout) BorderLayout CardLayout FlowLayout GridBagLayout GridLayout 事件類(Event) Event AWTEvent 繪圖類(Draw) Color Font Graphics Image

5、,使用AWT構(gòu)件,在AWT的概念中,窗口系統(tǒng)所顯示的各種對象統(tǒng)稱為構(gòu)件:Button,Menu,List等等都是構(gòu)件。 Component是代表構(gòu)件最基本的類。 Component類中定義了各種窗口對象中最基本、最重要的方法和性質(zhì)。隨時隨處都有可能利用Component定義的方法。,使用AWT構(gòu)件,AWT使用Container類來定義最基本的構(gòu)件容器,它有兩個子類:Window類和Panel類. Window 不需要其他組件支撐,獨立顯示。 Panel 必須放在Window組件中(或Web瀏覽器窗口)才能顯示。它為一矩形區(qū)域,在其中可擺放其他組件,可以有自己的布局管理器。 在Window類還有

6、兩個子類 1. 定義對話框,用Dialog子類;Java還提了一個Dialog的子類-FileDialog, 用它生成文件對話框 2. 定義一般意義的窗口,用Frame類.,容器,容器組件的主要作用是包容其他組件并按一定的方式組織排列它們,同一個容器中的所有部件通常總是同時被顯示和同時被隱藏的。 容器類都是從Component類繼承來的,它可以作為對象容納任何的可視元素。在各種復雜的用戶接口中,容器使得放置組件的操作變得特別容易。 Java的Component類提供了一個public add()方法,可以向容器添加組件。即,一個容器可以調(diào)用這個方法將組件添加到該容器中。,Panel與Windo

7、w,面板(Panel)是Java中最為通用的容器。Panel是從Container類直接繼承的,它可以被包含在另一個容器中,或是在Web瀏覽器的窗口中。當需要擺放許多元素時,就需要將元素按其邏輯關(guān)系進行分組,然后放入Panel中,這可以簡化處理過程。 Panel顯示一個四邊形,其他組件可以放入其中。需要注意的是:Panel必須放在Window之中(或Window的子類中)才能顯示出來。 窗口(Window)與Panel一樣,是個通用容器類,但與Panel不同的是,Window有一個獨立于Web瀏覽器或appletviewer窗口的窗口。程序員不能直接使用Window類,但可以使用它的3個子類,

8、即Frame(框架)、Dialog(對話框)和FileDialog(文件對話框)。,Dialog與Frame,Dialog沒有菜單條,盡管它能移動,但它不能縮放。Dialog可以提醒用戶進行所需要的輸入或者反饋應答消息。 Frame是Java中最重要、最常用的容器之一,是Java 應用程序的圖形用戶界面容器。作為一個應用程序最外層的容器,它可以被其他容器創(chuàng)建并彈出成為獨立的容器。 Frame是一個帶有標題和縮放角的窗口,它有自己的外邊框和自己的標題,創(chuàng)建Frame時可以指定其窗口標題。例如,每個Frame在其右上角都有3個控制圖標,分別代表將窗口最大化、最小化和關(guān)閉的操作,關(guān)閉窗口的操作不能通

9、過單擊關(guān)閉圖標實現(xiàn),需要程序編寫專門的代碼完成。,布局管理器,容器里組件的位置和大小是由布局管理器(layout manager)來決定的。容器對布局管理器的特定實例保持一個引用。當容器需要定位一個組件時,它將調(diào)用布局管理器來完成。當決定一個組件的大小時,也是如此。 在AWT中,給我們提供了五種布局管理器: FlowLayout: 組件在一行中從左至右水平排列,排滿后折行 BorderLayout:東、南、西、北、中,最多可放五個控件 GridLayout:以行和列的網(wǎng)格形式安排組件 GridBagLayout:更復雜、功能更強的網(wǎng)格布局 CardLayout:每一個組件作為一個卡片,容器僅顯

10、示多個卡片中的某一個,確定布局管理器,缺省的布局管理器 Window 、Frame、Dialog BorderLayout Panel 、Applet FlowLayout: 選擇布局管理器的方法 建立布局管理器類的對象 利用容器的 setLayout 為容器指定布局(即指定一個布局管理器的對象) 例:將myFrame布局設(shè)定為FlowLayout類型 myFrame.setLayout(new FlowLayout();,直接管理布局,我們可以通過設(shè)置空布局管理器,來控制組件的大小和位置。調(diào)用setLayout(null)。 在設(shè)置空布局管理器后,必須對所有的組件調(diào)用setLocation(

11、),setSize()或setBounds(),將它們定位在容器中。 直接管理組件將失去平臺無關(guān)性,FlowLayout,為Panel和Applet的缺省布局方式,一般用在Panel中。容器中的各個控件從左到右排列;各個控件依其標簽自動調(diào)整大小;對齊方式: 有(LEFT、RIGHT、CENTER); 用方法setAlignment(int) 來設(shè)定。 可設(shè)置控件間隔:setHgap(int)。,BorderLayout,為Frame、Dialog的缺省布局方式 容器中的各個控件位置分在五個區(qū): North, South, East, West,Center,Center,North,South

12、,WEST,EAST,GridLayout,容器中的各個控件按網(wǎng)格狀整齊排列, 每個控件占一個格, 大小一樣,類似于表格。,GridBagLayout,容器中的各個控件按網(wǎng)格布局, 每個控件可以占一個或多個網(wǎng)格,控件可以填充所占單元格,也可以占滿,保持原來大小。,CardLayout,容器中的每個控件作為一張卡片看待, 每次只顯示一張卡片。容器相等于一個卡片棧。卡片的順序由容器內(nèi)部確定。 卡片的切換通過方法:show(Container, String) ; 將控件增加到卡片中去, 用方法: addLayoutComponent(Component, Object) ;,事件處理,事件表達了程

13、序、系統(tǒng)及使用程序的用戶之間的動作。當用戶做某些事情(例如用戶在程序窗口中單擊鼠標),系統(tǒng)將創(chuàng)建一個相應表達該動作的事件,并傳送該事件給程序中的事件處理代碼(該代碼決定了怎樣處理事件),以便讓用戶得到相應的回應。 沒有事件,應用程序就無法響應用戶的活動。Java語言中存在各種不同類型的事件類用來描述各種類型的用戶交互。,AWT事件模型,Event(事件):描述發(fā)生了什么的事件。 Event source(事件源):事件的產(chǎn)生器。 Event handler(事件處理器):接收事件對象、解釋事件對象并處理用戶交互的方法。,AWT事件模型,JDK1.0的事件模型:層次模型,Frame,Panel,Button,Action event,AWT事件模型,JDK1.1的事件模型:委托模型 事件監(jiān)聽器:實現(xiàn)了監(jiān)聽器接口的類。一個監(jiān)聽器對象是一個實現(xiàn)了專門的監(jiān)聽器接口的類的實例。,Frame,Panel,Button,Frame and Panel event handlers,Action event,事件監(jiān)聽器,actionPerformed(ActionEvente),Action handlers,層次模型的優(yōu)缺點,簡單,利用了OOP性質(zhì),在Component中定義了handleE

溫馨提示

  • 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

提交評論