版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第13章圖形用戶界面設(shè)計13.1GUI概述
13.2組件的創(chuàng)建與使用
13.3布局管理器
13.4事件處理
13.1GUI概述
通過圖形用戶界面(GraphicsUserInterface,GUI),用戶和程序之間可以方便地進行交互。Java語言提供了專門的類庫來生成各種標(biāo)準(zhǔn)圖形界面元素和處理圖形界面的各種事件,以實現(xiàn)圖形用戶界面的設(shè)計。
Java語言中,設(shè)計和實現(xiàn)GUI主要分為以下3個步驟:
(1)創(chuàng)建組件(Component):建立可以顯示的元素。
(2)指定布局(Layout):排列組件位置。
(3)響應(yīng)事件(Event):與用戶產(chǎn)生交互。為了完成上述工作,Sun為我們提供了兩個專門的工具包:一個是抽象窗口工具包(AbstractWindowToolkit,AWT),另一個是Swing包。下面根據(jù)包產(chǎn)生的先后順序來逐一介紹。AWT包是為Java程序提供的建立圖形用戶界面的工具集,可用于Java的Applet和Application中。它的功能包括:用戶界面組件、事件處理模型、圖形和圖像工具(包括形狀、顏色和字體類)、布局管理器等。AWT是Swing的基礎(chǔ),Swing的產(chǎn)生原因主要是AWT不能滿足圖形化用戶界面發(fā)展的需要。隨著發(fā)展的需要,Sun公司在Java1.2版中推出了新的用戶界面庫Swing。相對于AWT來說,Swing功能更強大,使用更方便,它的出現(xiàn)使得Java的圖形用戶界面上了一個臺階。Swing是由100%純Java實現(xiàn)的,Swing組件是用Java實現(xiàn)的輕量級(Light-weight)組件,沒有本地代碼,不依賴操作系統(tǒng)的支持,這是它與AWT組件的最大區(qū)別。
Swing比AWT組件具有更強的實用性。Swing在不同的平臺上表現(xiàn)一致,并且有能力提供本地窗口系統(tǒng)不支持的其他特性。但是Swing并沒有代替AWT。在Java1.1版中,AWT事件處理模型有了根本改變。Swing使用的仍然是Java1.1版的事件處理模型。13.1.1AWT簡介
Java語言的AWT包包含了許多類來支持GUI設(shè)計。AWT提供了用于所有JavaApplets及應(yīng)用程序的基本GUI組件,還為應(yīng)用程序提供了與機器無關(guān)的界面,從而保證了一臺計算機上出現(xiàn)的內(nèi)容與另一臺上的內(nèi)容相一致。
前面已介紹過,超類可以擴展,其屬性是可繼承的。另外,類可以被抽象化,這就是說,它們是可被分成子類的模板,子類用于類的具體實現(xiàn)。顯示在屏幕上的每個GUI組件都是抽象類組件的子類。也就是說,每個從組件類擴展的圖形對象都與允許它們運行的大量方法和實例變量共享。Container是Component的一個抽象子類,它允許其他組件被嵌套在里面。這些組件也可以是允許其他組件被嵌套在里面的容器,于是就創(chuàng)建了一個完整的層次結(jié)構(gòu)。在屏幕上布置GUI組件時,Container是很有用的。Panel是Container的最簡單的類。Container的另一個子類是Window。AWT由Java語言的java.awt提供,該包中有許多用來設(shè)計GUI的組件類,如按鈕、菜單、列表、文本框等組件類,同時它還包括窗口、面板等容器。AWT是Java語言進行GUI程序設(shè)計的基礎(chǔ)。13.1.2Swing簡介
Swing是Java基礎(chǔ)類庫(JavaFoundationClass,JFC)提供的新的圖形界面類庫。在JFC的新特性中,Swing是其中最主要的部分。Swing為基于窗體的應(yīng)用開發(fā)設(shè)計提供了一套精美、豐富的基本組件以及一個能使圖形用戶界面獨立于特定平臺的顯示框架。用Swing組件設(shè)計的程序比用AWT設(shè)計的程序具有更加優(yōu)美的外觀感受。
Swing是一個擴展的AWT,它提供了一個遠(yuǎn)大于AWT的綜合的組件集合,并引入了新的概念和性能。
javax.swing包中定義了兩種類型的組件:頂層容器(即重量級組件)(JFrame、JApplet、JDialog、JWindow)和輕量級組件。Swing組件從AWT的Container類繼承而來,輕量級組件是除頂層容器外的“J”類組件,它們是繼承AWTContainer類的JComponent類及其子類。與AWT比較,Swing提供了更完整的組件,引入了許多新的特性和能力。SwingAPI是圍繞著實現(xiàn)AWT各個部分的API構(gòu)筑的,從而保證了所有早期的AWT組件仍然可以使用。 13.2組件的創(chuàng)建與使用
1.?Frame框架
Frame是Window的一個子類,是帶有標(biāo)題和縮放角的窗口,繼承Java.awt.Container,因此,可以用add()方法來給框架添加組件??蚣艿哪J(rèn)布局管理器就是BorderLayout,但可以用setLayout()方法來改變??蚣茴愔械臉?gòu)造程序Frame(String)用由String規(guī)定的標(biāo)題來創(chuàng)建一個新的不可見的框架對象。當(dāng)它還處于不可見狀態(tài)時,將所有組件添加到框架中。Frame類是頂層容器,具有以下特點:
(1)?Frame類是Window類的直接子類。
(2)?Frame對象顯示的效果是一個窗口,帶有標(biāo)題和尺寸。
(3)?Frame被默認(rèn)為初始化是不可見的,可以使用setVisible(true)方法使之可見。
(4)?Frame默認(rèn)的布局管理器是BorderLayout,可以使用setLayout()方法改變默認(rèn)布局。
Frame類的常用構(gòu)造方法如下:
Framef1=newFrame();
Framef2=newFrame(Strings);//s為框架標(biāo)題圖13-1JPanel效果圖在開發(fā)中可以使用JPanel完成一些復(fù)雜的界面設(shè)計。
6.?JScrollPane
在一般的圖形界面中,如果顯示的區(qū)域不夠大,往往會出現(xiàn)滾動條以方便用戶瀏覽,在Swing中JScrollPane的主要功能就是為顯示的內(nèi)容加入水平滾動條。
JScrollPane主要由JViewPort和JScrollBar兩部分組成,前者主要用于顯示一個矩形區(qū)域以便于用戶瀏覽,而后者主要用于形成水平或者垂直的滾動條。圖13-2JScrollPane效果圖 13.3布?局?管?理?器
要為應(yīng)用程序設(shè)計精美的外觀,設(shè)計和控制窗口組件在容器中的位置和相互關(guān)系,就必須學(xué)習(xí)布局設(shè)計的知識。Java語言的GUI界面設(shè)計中,布局控制是一個相當(dāng)重要的環(huán)節(jié)。將一個組件加入容器中時,布局管理器控制決定了所加入組件的大小和位置。當(dāng)容器大小改變時,布局管理器能自動地改變其中組件的大小和位置。
Java.awt包定義了5個布局管理類,每個布局管理類對應(yīng)一種布局策略,這5個布局管理類分別是FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout。
1.?FlowLayout布局管理器
FlowLayout屬于流式布局管理器,使用此種布局方式,所有的組件會像流水一樣依次排列。
圖13-3FlowLayout布局管理器
2.BorderLayout布局管理器
BorderLayout將一個窗體的版面劃分成東、西、南、北、中五個區(qū)域,如圖13-4所示??梢灾苯訉⑿枰慕M件放到五個區(qū)域。圖13-4BorderLayout布局管理器
3.GridLayout布局管理器
GridLayout布局管理器是以表格的形式進行管理的,如圖13-5所示。在使用此布局管理器的時候必須設(shè)置顯示的行數(shù)和列數(shù)。圖13-5GridLayout布局管理器
4.CardLayout布局管理器
CardLayout就是將一組組件彼此重疊地進行布局,就像一張張卡片一樣,這樣每次只會展現(xiàn)一個界面。
5.GridBagLayout布局管理器
以上的布局管理器都是依靠專門的工具完成的,在Java中也可以通過GridBagLayout布局管理器的方式完成,如圖13-6所示。圖13-6GridBagLayout布局管理器
13.4事件處理
前面介紹了如何放置各種組件,使圖形界面更加豐富多彩,但是還不能響應(yīng)用戶的操作,要讓圖形界面接收用戶的操作,就必須給各個組件加上事件處理機制。事件表達(dá)了程序、系統(tǒng)及使用程序的用戶之間的動作。當(dāng)用戶做某些事情(例如用戶在程序窗口中單擊鼠標(biāo))
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省牡丹江市第三子共同體2024-2025學(xué)年高二上學(xué)期期末歷史試卷(含答案)
- 英語-山東省濰坊市、臨沂市2024-2025學(xué)年度2025屆高三上學(xué)期期末質(zhì)量檢測試題和答案
- 2024社保工傷保險責(zé)任限額約定合同
- 企業(yè)競爭圖譜:2024年工業(yè)電機 頭豹詞條報告系列
- 2024版汽車服務(wù)加盟合同范本模板
- 2024藥店負(fù)責(zé)人任期藥店藥品市場調(diào)研與市場分析聘用合同3篇
- 福建省南平市峻德中學(xué)高一英語月考試卷含解析
- 2024股東借款合同范本員工福利費借款
- 2024版轉(zhuǎn)讓土地協(xié)議書
- 2025年《書·法》民法典作品專題講座與研討會合作協(xié)議2篇
- 2025湖北襄陽市12345政府熱線話務(wù)員招聘5人高頻重點提升(共500題)附帶答案詳解
- 血細(xì)胞分析報告規(guī)范化指南2020
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之7:“5領(lǐng)導(dǎo)作用-5.1領(lǐng)導(dǎo)作用和承諾”(雷澤佳編制-2025B0)
- 2024年快速消費品物流配送合同6篇
- 廣東省茂名市2024屆高三上學(xué)期第一次綜合測試(一模)歷史 含解析
- 神經(jīng)重癥氣管切開患者氣道功能康復(fù)與管理學(xué)習(xí)與臨床應(yīng)用
- 第5章 一元一次方程大單元整體設(shè)計 北師大版(2024)數(shù)學(xué)七年級上冊教學(xué)課件
- 人教版高一地理必修一期末試卷
- 遼寧省錦州市(2024年-2025年小學(xué)六年級語文)部編版期末考試(上學(xué)期)試卷及答案
- 2024年下半年鄂州市城市發(fā)展投資控股集團限公司社會招聘【27人】易考易錯模擬試題(共500題)試卷后附參考答案
- GB/T 29498-2024木門窗通用技術(shù)要求
評論
0/150
提交評論