




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目四
圖形用戶界面設計授課人:韓淑芹濰坊工程職業(yè)學校信息工程系Swing概述一、AWT包和Swing包Java語言提供的開發(fā)圖形用戶界面(GUI)的功能包括AWT(AbstractWindowToolkit)和Swing兩部分。這兩部分功能由Java的兩個包來完成——AWT和Swing。雖然這兩個包都是用于圖形用戶界面的開發(fā),但是它們不是同時被開發(fā)出來了。AWT包是最早被開發(fā)出來的。但是使用AWT包開發(fā)出來的圖形用戶界面并不完美,在使用上非常的不靈活。比如AWT包所包含的組件,其外觀是固定的,無法改變,這就使得開發(fā)出來的界面非常死板。這種設計是站在操作系統(tǒng)的角度開發(fā)圖形用戶界面,主要考慮的是程序與操作系統(tǒng)的兼容性。這樣做的最大問題就是靈活性差,而且程序在運行時還會消耗很多系統(tǒng)資源。由于AWT包的不足表現(xiàn),SUN公司于1998年針對它存在的問題,對其進行了擴展,開發(fā)出了Swing,即Swing包。但是,SUN公司并沒有讓swing包完成替代AWT包,而是讓這兩個包共同存在,互取所需。AWT包雖然存在缺點,但是仍然有可用之處,比如在圖形用戶界面中用到的布局管理器、事件處理等依然采用的是AWT包的內容。Swing概述Java有兩個主要類庫分別是Java包和Javax包。在Java包中存放的是Java語言的核心包。Javax包是Sun公司提供的一個擴展包,它是對原Java包的一些優(yōu)化處理。Swing包由于是對AWT包的擴展和優(yōu)化,所以是存放在Javax包下的,而AWT包是存放在Java包下的。雖然Swing是擴展包,但是,現(xiàn)在的圖形用戶界面基本都是基于Swing包開發(fā)的。importjava.awt.*;importjavax.swing.*;Swing包的組件大部分是采用純Java語言進行開發(fā)的,這就大大增加了組件的可操作性,尤其是組件的外觀。通常情況下,只要通過改變所傳遞的參數(shù)的值,就可以改變組件的外觀,而且Swing包還提供LookandFeel功能,通過此功能可以動態(tài)改變外觀。Swing包中也有一些組件不是用純Java語言編寫的,這些組件一般用于直接和操作系統(tǒng)進行交互的。二、與GUI(GraphicalUserInterface)有關的術語1、組件構成圖形用戶界面的各種元素稱為組件,組件可以包括文本框、按鈕、列表框、對話框等。2、容器容器是圖形用戶界面中容納組件的部分,一個容器可容納一個或多個組件,甚至可以容納其他容器。容器與組件的關系就像杯子和水的關系。需要說明的是,容器也可以被稱為組件。在任務1中的JFrame就是一個容器。3、布局管理器組件在被放到容器中時,要遵循一定的布局方式。在Java的圖形用戶界面中,有專門的類來管理組件的布局,稱這些類為布局管理器。所謂的布局管理器,實際上就是能夠對組件進行布局管理的類。Swing概述三、AWT(AbstractWindowToolKit
抽象窗口工具包)事件處理機制1.事件處理機制的過程通過GUI組件,用戶可以對應用程序進行各種操作,反之,應用程序可以通過GUI組件收集用戶的操作信息,如用戶在窗口上移動了鼠標、按下了鍵盤、點擊了按鈕等。如果我們單擊某個按鈕時執(zhí)行某種功能,就必須編寫相應的處理程序代碼。對于這種GUI程序與用戶操作的交互功能,Java使用了一種自己的專門方式,稱之為事件處理機制。
事件處理機制概述事件處理機制中的概念:事件:用戶對組件的一個操作,稱之為一個事件(Event)。如點擊按鈕會產生一個動作(Action)事件、縮放或是關閉框架會產生一個窗口(Window)事件、移動鼠標會產生鼠標移動(MouseMotion)事件。事件源:發(fā)生事件的組件就是事件源。事件處理器:某個Java類中的負責處理事件的成員方法。三者之間的關系如圖所示。事件處理機制概述Java程序對事件進行處理的方法是放在一個類對象中,這個類對象就是事件監(jiān)聽器。Java中事件處理機制的一般過程是:
(1)事件監(jiān)聽器注冊將一個事件監(jiān)聽器對象同某個事件源的某種事件進行關聯(lián),這樣,當某個事件源上發(fā)生了某種時間后,關聯(lián)的事件監(jiān)聽器對象中的有關代碼才會被執(zhí)行,這個關聯(lián)的過程稱為向事件源注冊事件監(jiān)聽器對象。
(2)發(fā)生事件用戶操作了GUI組件,發(fā)生了某個事件。
(3)生成事件對象并處理發(fā)生事件后,組件就會產生一個相應的事件對象,并把此對象傳遞給與之對應的事件處理器,事件處理器就會執(zhí)行相應的代碼來處理事件。事件處理機制概述2.事件分類事件用以描述發(fā)生了什么事情。AWT對各種不同的事件,按事件的動作(如鼠標操作、鍵盤操作)、效果(如窗口的關閉和激活)等進行了分類,每一類事件對應一個AWT事件類。AWT的事件類可以通過JDK文檔中的java.awt.event包進行查閱,常見的事件類有:MouseEvent:對應鼠標的按下、釋放、點擊等事件。WindowEvent:對應窗口的關閉、最小化、得到與失去焦點等窗口事件。
ActionEvent:對應一個動作事件,如菜單、按鈕被單擊或者鍵盤操作,則觸發(fā)一個動作事件??梢岳斫鉃?,用戶的一個動作導致了某個組件本身最基本的作用發(fā)生了,這就是ActionEvent事件。菜單、按鈕放在那里就是用來發(fā)出某種動作或者命令的,鼠標單擊(也可以用鍵盤來操作)這些組件,只是表示要執(zhí)行這種動作或命令的事情發(fā)生了。事件處理機制概述3.事件監(jiān)聽器接口某一類事件,其中又包含觸發(fā)這一事件的若干具體情況。對一類事件的處理由一個事件監(jiān)聽器對象來完成,對于觸發(fā)這一事件的每一種情況,都對應著事件監(jiān)聽器對象的一個不同的方法。如窗口事件,對應著WindowEvent事件對象,在這個對象里包含很多的方法,這些方法包括:
publicvoidwindowOpened(WindowEvente)
publicvoidwindowClosing(WindowEvente)
publicvoidwindowClosed(WindowEvente)
publicvoidwindowIconified(WindowEvente)
publicvoidwindowDeiconified(WindowEvente)
publicvoidwindowActivated(WindowEvente)
publicvoidwindowDeactivated(WindowEvente)
事件處理機制概述界面如下:舉例一完成步驟:1.創(chuàng)建工程文件2.設計界面3.編寫代碼4.執(zhí)行常用組件介紹步驟:1.Filenewproject2.建立包常用組件介紹3.右擊包名newother常用組件介紹在設計圖形用戶界面時,我們往往會用到一些組件,這些組件構成GUI界面的元素。Swing對AWT進行了擴展,增加了AWT包下組件的功能,為了與原來組件進行區(qū)別,在Swing包下的所有組件名稱都在原來名字的前面加了一個“J”。因此,在Java的圖形用戶界面中,以“J”為首字母的組件都歸屬于Swing包1.JFrame組件是一種頂層(Top-Level)容器組件,Swing組件中還有其它頂層容器如: Jdialog:對話框 Japplet:用于設計嵌入網頁中的java小程序通過JFrame創(chuàng)建框架的常用方式有兩種: newJFrame(); newJFrame(Strings);其中Strings就是窗口的標題。常用組件介紹JFrame類包含的方法:(1)設置窗口大小的方法
pack():根據(jù)所容納的組件自定義窗口的大小setSize(w,h):設置的窗口大小是固定的,不受組件的影響。
setBounds(x,y,w,h):設置窗口的大小,及窗口在屏幕上顯示的位置。其中x和y是設置窗口在屏幕上顯示的起始坐標,w和h是設置窗口的大小。
(2)標題設置方法
setTitle(Strings):方法可以設置窗口的標題。(3)設置窗口前景色和背景色方法
setForeground(Colorc):用于設置窗口前景色。setBackground(Colorc):用于設置窗口背景色。
例:win.setBackground(Color.blue);窗口背景色設置為藍色。
(4)顯示窗口方法
setVisible(booleanb):將窗口顯示在屏幕上。其中的參數(shù)是布爾值。當參數(shù)值為true時,顯示窗口;當參數(shù)值為false時,不顯示窗口。
常用組件介紹2.
JLabel標簽通常是用來標識另外一個組件的含義??梢栽跇撕炆巷@示文字、圖像或是文字圖像的組合。相關的方法:setText():getText():setAlignment():getAlignment():setIcon(Iconimage):getIcon():setForeground(Colorc):setBackground(Colorc):常用組件介紹練習題目:設計如下圖所示的界面,并實現(xiàn)當鼠標點擊任何一個標簽控件時,都能實現(xiàn)另外兩個標簽控件的文本互換。常用組件介紹3.文本輸入類組件文本框(JTextField)、密碼框(JPasswordField)、文本域(JTextArea)以及可編輯的組合框(JComboBox)等。JTextField控件:用戶只能輸入單行的文本,JTextArea控件:用戶可以輸入多行的文本。JPasswordField控件:用戶向密碼框中輸入文本時,實際的輸入文本并不在密碼框中顯示,而是使用特殊的回顯字符(通常是'*')加以顯示。JComboBox控件:可預先設置候選的文本串,用戶可以方便地選擇合適的文本。當候選的文本串均不合適時,在可編輯狀態(tài)下,用戶可以向組合框中輸入文本,這也是把可編輯的組合框分類到文本輸入類組件的原因。對于不可編輯的組合框,可以歸類為選擇類組件。常用組件介紹例題1:常用組件介紹例題:2常用組件介紹文本框(JTextField)的相關方法:getText()方法,可以取得文本框中的文本內容setText():設置文本區(qū)中的文本getSelectedText():獲取當前被選定的文本Select(intstartIndex,intendIndex):選擇部分文本setEditable(booleanaValue)方法來設置文本框是否可編輯。isEditable():判定文本區(qū)的可編輯性。requestFocus():使文本框獲得焦點文本框的相關事件Caret:當用戶使用鍵盤、鼠標等移動了文本光標在JTextField中的位置時觸發(fā)這個事件常用組件介紹密碼框(JPasswordField)的相關方法
setEchoChar(charc):改變缺省的回顯字符。
getPassword():取得密碼框中的文本,該方法返回的是一個char數(shù)組。如:
//創(chuàng)建了一個密碼框
JPasswordFieldtxtPwd=newJPasswrodField(20);
//設定該密碼框的回顯字符為'#'
txtPwd.setEchoChar('#')
//取得密碼框中的內容
char[]pwd=txtPwd.getPassword();
//將char數(shù)組轉化為String類型的對象
StringpwdStr=newString(txtP.getPassword());
常用組件介紹文本域的相關方法:
setLineWrap(true):將文本域設置為自動換行set
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024杭州科技職業(yè)技術學院輔導員招聘筆試真題
- 1.食品安全地方標準立項建議書(式樣)
- 2023.06.21夏至一陰初升
- 2025年陜西省國家綜合性消防救援隊伍招聘考試試題【答案】
- 2025年濕簧式繼電器項目發(fā)展計劃
- 北京海淀區(qū)社區(qū)工作者招聘筆試真題2024
- 2025年昭通市昭陽區(qū)龍泉街道辦事處選拔社區(qū)后備干部考試試題【答案】
- 2025年產后健康項目發(fā)展計劃
- 消防專項方案
- 理財顧問實習報告范文-1
- 招商大使選聘管理辦法
- 智慧教育基于大數(shù)據(jù)的個性化教學研究與實踐
- 2025年中國鐵路集團招聘筆試備考題庫(帶答案詳解)
- 用工風險培訓課件
- 海外現(xiàn)場安全健康環(huán)境管理(HSE)
- 2025年公安機關人民警察(行政執(zhí)法)資格考試(客觀題及刑法)含答案
- DB3502∕T 166-2024 既有廠區(qū)及老舊小區(qū)海綿城市方案設計導則
- 2025年 江西省金控科技產業(yè)集團有限公司招聘考試筆試試卷附答案
- 四川省成都市蓉城聯(lián)盟2024-2025學年高一下學期6月期末考試物理試題(含答案)
- 2025年中國模內標簽(IML)行業(yè)市場全景分析及前景機遇研判報告
- 【人教版】吉林長春2024-2025學年 五年級下學期期末數(shù)學試題【附答案】
評論
0/150
提交評論