




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
圖形用戶界面開發與事件處理第7章圖形用戶界面開發與事件處理教學目標:掌握用Swing來設計圖形用戶界面的方法掌握組件、容器、布局管理器等概念了解Swing主要組件的用法及所采用的事件處理接口1.圖形用戶界面的構成圖形用戶界面是一組圖形界面成分和界面元素的有機組合,其中包括的元素如下。1)容器容器是一種特殊的組件,它能夠容納其他組件或容器組件。每一個GUI程序至少包含一個頂層容器。2)組件組件是可以用圖形化的方式顯示在屏幕上并能夠與用戶進行交互的對象。(1)組件是圖形用戶界面的最小單位之一,里面不再包含其他的成分。(2)組件不能獨立地顯示出來,必須放在一定的容器中才可以顯示出來。2.建立GUI應用程序的流程建立GUI應用程序的流程如下。(1)引用需要的包和類。(2)設置一個頂層的容器。(3)根據需要為容器設置布局管理器或使用默認布局管理器。(4)將組件添加到容器內,位置自行設計。(5)為響應事件的組件編寫事件處理代碼。7.1AWT簡介28十月20246AWT的全稱是抽象窗口工具集(AbstractWindowToolkit)它是一個特殊的組件,其中包含有其他組件。AWT中包括圖形界面編程的基本類庫。其中主要由組件類(Component)、容器類(Container)、圖形類(Graphics)和布局管理器(LayoutManager)等幾部分組成。AWT中存在缺少剪貼板、缺少打印支持等缺陷。AWT包含四個主要的類:組件(Component)類、容器(Container)類、圖形(Graphics)類和布局管理器(LayoutManager)類。Component類:菜單、按鍵、列表等組件的抽象基本類。Container類:擴展Component的抽象基本類。由Container派生的類有Panel、Applet、Window、Dialog和Frame類等。容器中可以包含多個組件。Graphics類:定義組件內圖形操作的基本類。每個組件都有一個相關的圖形對象。LayoutManager類:定義容器中組件的位置和尺寸的接口。Java中定義了幾種默認的布局管理器。
7.2Swing基礎Swing組件是Java語言提供的第二代GUI設計工具包,它以AWT為基礎,在AWT內容的基礎上新增或改進了一些GUI組件,使得GUI程序功能更強大,設計更容易、更方便。Swing與AWT有以下不同。(1)
Swing是完全用Java語言編寫的,所以稱Swing組件是輕量級組件,沒有本地代碼,不依賴操作系統的支持,比AWT構件具有更強的實用性。Swing在不同的平臺表現一致,并且有能力提供本地窗口系統不支持的其他特性。(2)
Swing采用了一種MVC的設計范式,即“模型-視圖-控制”(Model-View-Controller),其中:模型用來保存內容;視圖用來顯示內容;控制器用來控制用戶輸入。(3)
Swing的外觀感覺采用可插入的外觀感覺(PluggableLookandFeel,PL&F)。在AWT構件中,由于控制構件外觀對等類與具體平臺相關,使得AWT構件總是只有與本機相關的外觀;Swing可以使得Java程序在一個平臺上運行時能夠有不同的外觀,用戶可以選擇自己習慣的外觀。(4)
Swing組件的名稱都以字母J開頭,例如,AWT的框架類、面板類、按鈕類和菜單類被命名為Frame、Panel、Button和Menu,而Swing對應的組件類被命名為JFrame、JPanel、JButton和JMenu。另外,AWT組件在java.awt包中,而Swing組件在javax.swing包中。Swing的類層次結構如圖所示:3.簡單的范例一個簡單的SwingGUI應用程序。該程序生成一個窗口,窗口中有一個標簽,用于顯示輸出。(1)程序代碼:1. importjava.awt.*;2. importjavax.swing.*;3. publicclassSwingDemo4. {5. publicstaticvoidmain(Stringargs[])6. {7. JFramefm=newJFrame("第一個Windows程序");8. JLabellabel=newJLabel("這是第一個GUI程序");9. Containerc=fm.getContentPane();10. c.add(label);11. fm.setSize(200,150);12. fm.setVisible(true);13. }14. }例題7.1說明了Swing中程序設計的結構以及最基本的組件JLabel的用法。程序中建立了一個Swing風格的窗口,并在其中添加了一個標簽。本程序沒有編寫事件代碼,只是一個靜態窗口的顯示。提示: 由于Swing組件使用AWT的結構,所以,使用Swing組件的程序一般需要使用awt包。7.3容器Java的圖形用戶界面的最基本組成部分是構件(Component)。構件是能以圖形化的方式顯示在屏幕上并能與用戶進行交互的對象。構件不能獨立地顯示出來,必須將構件放在一定的容器中才可以使其顯示出來。由java.awt.Container類擴展的類稱為容器,Container類也是一個由Component類擴展的抽象類。顧名思義,容器就是用來包含組件的,一個容器可以包含多個組件,也可以使用容器將相關組件關聯在一起,成為一個整體。合理地使用容器可以簡化圖形界面的設計,而且對于組件的顯示安排也很有用。Swing的容器從功能上分為以下三類。(1)頂層容器:它是構建SwingGUI應用程序的主窗口(2)中間容器:可以容納組件,但它本身必須添加到其他容器中使用。(3)特殊容器7.3.1框架窗體JFrame框架JFrame是在Swing中經常使用到的組件,是最底層的容器,可稱之為“窗口”。JFrame是SwingGUI應用程序的主窗口。窗口帶標題、邊界、窗口狀態調節按鈕。每一個應用程序都應至少包含一個框架。
教材例題8.2,例題8.3用不同方法生成JFrame窗口7.3.2面板容器JPanel面板JPanel也是Java中常用到的容器之一,面板是一種透明的容器,既沒有標題,也沒有邊框,就像一塊透明的玻璃。與JFrame不同,它不能作為最外層的容器單獨存在,它首先必須作為一個構件放置到其他容器中,然后再把它作為容器,把其他構件放到其中。教材例題8.6,例題8.7用不同方法創建面板7.4布局管理為了實現跨平臺的特性并且獲得動態的布局效果,Java將容器內的所有構件安排給布局管理器(LayoutManager)負責管理。布局管理器負責指定容器中組件的位置和大小。布局管理器只需要確定組件和其他組件的相對位置,而不需要決定它的坐標,這樣的好處就是當改動窗口大小時,布局管理器會自動更新布局來配合窗口的大小,令與平臺無關的用戶界面更易于實現。當創建一個新的容器時,應該調用setLayout方法指定布局管理器。布局管理器的相關類主要包括FlowLayout、BorderLayout、GridLayout、BoxLayout等。7.4.1FlowLayoutFlowLayout(流式布局管理器)將組件按照加入的先后順序從左向右排列,一行排滿轉入下一行繼續排列,直到把所有組件顯示出來。例題7-5在窗口中以FlowLayout方式加入5個按鈕。7.4.2BorderLayoutBorderLayout(邊界布局管理器)將容器的布局分為5個區:北區、南區、東區、西區和中區。這幾個區的分布規律是“上北下南,左西右東”,與地圖的方位相同。當容器的大小改變時,容器中各個組件的相對位置不變,其中間部分組件的尺寸會發生變化,四周組件的寬度固定不變。組件可以指定自己放在哪個區內。因為只有5個區,所以最多只能容納5個組件(不一定非要將5個區全部放置組件)。教材例題7-6將5個按鈕加入BorderLayout的5個區7.4.3BoxLayoutBoxLayout按照自下而上(y軸)或者自左而右(x軸)的順序依次加入構件。建立一個BoxLayout對象,必須指明兩個參數:被布局的容器和BoxLayout的主軸。默認情況下,構件在縱軸方向上居中對齊。利用BoxLayout,可在容器中水平或垂直地安排布局例題7-7利用BoxLayout布局,設計登錄界面。(見教材)7.4.4GridLayoutGridLayout(網格布局管理器)把容器區域分成若干個大小相同的網格,每個網絡可以放置一個組件,這種布局方式對數量眾多的組件很合適。創建網格布局管理器時,可以給定網格的行數和列數。改變容器的大小后,其中組件的相對位置不變,但大小改變。容器中各個組件同高度、同寬度。各個組件缺省的排列方式為從上到下、從左到右。教材例題7-8設置GridLayout布局7.5Swing組件7.5.1按鈕按鈕(JButton)是GUI中非常重要的一種基本組件。按鈕一般對應于一個事先定義好的事件、執行功能、一段程序。當使用者單擊按鈕時,系統自動執行與該按鈕聯系的程序,從而完成預定的功能。例題7-9設置按鈕的示例。(見教材)7.5.2復選框1.復選框JCheckBox類提供對復選框的支持。復選框是具有開關或真假狀態的控件。教材例題7-10提供3個復選框供用戶選擇7.5.3單選按鈕在一組單選按鈕中,可進行選擇其中一個的操作,即進行“多選一”操作。JRadioButton類的類層次和構造方法的參數構成都與前面介紹的JCheckBox類相同。這里不再列出JRadioButton類的這些內容。因為單選按鈕是在一組按鈕中選擇一個,因此,必須將單選按鈕分組,即指明在一個組中包含哪些單選按鈕??捎肂uttonGroup創建單選按鈕組對象,應用對象的add()方法順序加入各個單選按鈕。教材例題7-11使用單選按鈕來選擇性別。7.5.4組合框在Java語言中,組合框(JComboBox)有可編輯的和不可編輯的兩種不同的形式。缺省是不可編輯的組合框。下面就對不可編輯的組合框進行介紹。組合框用于在多個選項中選擇一項的操作。在未選擇組合框時,組合框顯示為帶按鈕的一個選項的形式;當對組合框按鍵或單擊時,組合框會打開可列出多個選項的一個列表,提供給用戶選擇。教材例題7-12利用組合框顯示、選取地名。7.5.5文本框與文本域Java語言提供了單行文本框、口令框和多行文本框等文本框形式,它們都是人機交互的主要組件。1.單行文本框單行文本框一般用來讓用戶輸入如姓名、地址這樣的信息,它是一個能夠接收用戶鍵盤輸入的單行文本區域。類JTextField提供對單行文本框的支持。2.口令框單行口令文本框JPasswordField類是JTextField類的子類。在JPasswordField對象中輸入的文字會被其他字符替代,這個組件常用來在Java程序中輸入口令。3.多行文本框JTextField是單行文本框,不能顯示多行文本,如果想要顯示大段的多行文本,可以使用JTextArea類支持的多行文本框。7.6事件處理事件處理技術是Java用戶界面設計中一個十分重要的技術。用戶在圖形用戶界面中輸入命令是通過移動鼠標或單擊特定界面元素來實現的。為了能夠接收用戶的命令,界面系統首先應該能夠識別這些鼠標或鍵盤的操作并做出相應的反應。通常,一個鍵盤或鼠標的操作會激發一個系統預先定義好的事件,用戶只需要設計程序代碼定義每個特定事件發生時所對應的響應操作,這些程序代碼將在它們對應的事件發生時由系統自動調用。在前面編寫的程序中,對按鈕等組件進行單擊操作,都沒有什么反應,就是因為沒有為事件編寫相應的處理程序。28十月20241.事件事件是系統在捕獲用戶界面操作過程中產生的代表相應操作的一個數據結構,是用戶操作在Java系統內的數字表達,它描述了發生了什么事情。用戶與用戶界面上的組件交互是通過響應各種事件來實現的,如用戶單擊了一個按鈕,意味著發生了一個按鈕事件。2.事件源(EventSource)產生事件的組件稱事件源。例如,如果用戶用鼠標單擊了按鈕對象button,則該按鈕button就是事件源。3.監聽器監聽器(Listener)是調用事件處理方法的對象,它能夠對事件源進行監聽,以便對事件源所發生的事件做出相應的處理。Java事件處理中的幾個概念28十月20244.事件注冊事件源為了將其上產生的事件傳遞給監聽器接收并處理,應該提供注冊和注銷事件監聽器的方法。注冊監聽器用于使該事件源上發生的事件能夠被監聽器接收并處理,注銷監聽器用于使監聽器不能監聽到該事件源上發生的事件。5.監聽器接口監聽器接口(事件處理方法)是能夠接收、解析和處理事件類對象、實現和用戶交互的方法。監聽器是一個對象,為了處理事件源發生的事件,監聽器會自動調用一個方法。Java規定,為了使監聽器能夠對事件源所發生的事件做出處理,創建該監聽器的類必須聲名實現相應的接口,即必須在類體中給出該接口中所有方法的方法體。那么當事件源發生事件時,監聽器就會自動調用執行被類實現的某個接口方法。28十月2024不同事件源上發生的事件種類是不同的,由不同的監聽器處理。每類事件都有對應的事件監聽器,監聽器是接口,根據動作來定義方法。系統提供的監聽器是接口,它們定義在java.awt.event包中。見教材152頁。教材例題7-15設計3個按鈕,單擊不同的按鈕時,在文本框中顯示不同的內容。7.6.1事件監聽器28十月2024一旦指定一個類實現了某個事件監聽器接口,就必須實現這個監聽器接口的所有方法,否則你只能將你的類定義為抽象類而無法定義這個類的實例。為了方便起見,Java語言提供了事件適配器Adapter類,用來實現含有多個方法的類。這些Adapter類中的方法是空的。你可以繼承Adapter類,而且只需重寫你所需要的方法。Adapter類的目的就是將那些具有很多方法的監聽器接口集合成為一個抽象類,使用戶不需要在程序中實現每個方法。Adapter類只是為了簡化編程而提供的一種中間轉換工具,使程序員在定義監聽器類時可以不必因直接實現監聽器接口而被迫重寫所有的抽象方法。教材例題7-16使用事件監聽器接口方法關閉窗口7.6.2事件適配器28十月2024激活構件事件處理——使用ActionEvent類ActionEven類只包含一個事件actionPerformed()。(1)事件源包括:JButton、JTextField、JTextArea、JRadioButton、JCheckBox、jcomboBox、JMenuItem。(2)需要實現的監聽器接口為ActionListener。(3)加入事件監聽器為addActionListener(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術學徒培訓協議書
- 放棄勞務合同協議書
- 異地夫妻約定協議書
- 政府合同開發協議書
- 房屋墻體界址協議書
- 定制版國際商務考察旅游合同
- 公司法醫鑒定機構合伙人合作期限協議
- 博士后科研流動站人才聘用與科研平臺共建合同
- 模塊化應急醫院快速施工與設備供應合同
- 網絡直播帶貨平臺供應鏈金融服務與品牌合作合同
- 畢業生就業意向調查表
- 微電網及儲能技術
- 《食品安全事故處置方案》
- 國家電網招聘之其他工學類復習提高資料打印
- 嬰兒撫觸與嬰兒操-嬰兒撫觸的手法(嬰幼兒撫觸與按摩課件)
- 學校食堂病媒生物防治管理制度范本(通用8篇)
- PID傳感器CF值異丁烯標定
- 氣排球記錄方法五人制2017年5月9日
- 碩士研究生專業研究方向證明(模板)
- 戥秤使用技術
- 《鋼鐵制造流程介紹》
評論
0/150
提交評論