版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目四
圖形用戶界面設(shè)計(jì)授課人:韓淑芹濰坊工程職業(yè)學(xué)校信息工程系Swing概述一、AWT包和Swing包Java語(yǔ)言提供的開(kāi)發(fā)圖形用戶界面(GUI)的功能包括AWT(AbstractWindowToolkit)和Swing兩部分。這兩部分功能由Java的兩個(gè)包來(lái)完成——AWT和Swing。雖然這兩個(gè)包都是用于圖形用戶界面的開(kāi)發(fā),但是它們不是同時(shí)被開(kāi)發(fā)出來(lái)了。AWT包是最早被開(kāi)發(fā)出來(lái)的。但是使用AWT包開(kāi)發(fā)出來(lái)的圖形用戶界面并不完美,在使用上非常的不靈活。比如AWT包所包含的組件,其外觀是固定的,無(wú)法改變,這就使得開(kāi)發(fā)出來(lái)的界面非常死板。這種設(shè)計(jì)是站在操作系統(tǒng)的角度開(kāi)發(fā)圖形用戶界面,主要考慮的是程序與操作系統(tǒng)的兼容性。這樣做的最大問(wèn)題就是靈活性差,而且程序在運(yùn)行時(shí)還會(huì)消耗很多系統(tǒng)資源。由于AWT包的不足表現(xiàn),SUN公司于1998年針對(duì)它存在的問(wèn)題,對(duì)其進(jìn)行了擴(kuò)展,開(kāi)發(fā)出了Swing,即Swing包。但是,SUN公司并沒(méi)有讓swing包完成替代AWT包,而是讓這兩個(gè)包共同存在,互取所需。AWT包雖然存在缺點(diǎn),但是仍然有可用之處,比如在圖形用戶界面中用到的布局管理器、事件處理等依然采用的是AWT包的內(nèi)容。Swing概述Java有兩個(gè)主要類庫(kù)分別是Java包和Javax包。在Java包中存放的是Java語(yǔ)言的核心包。Javax包是Sun公司提供的一個(gè)擴(kuò)展包,它是對(duì)原Java包的一些優(yōu)化處理。Swing包由于是對(duì)AWT包的擴(kuò)展和優(yōu)化,所以是存放在Javax包下的,而AWT包是存放在Java包下的。雖然Swing是擴(kuò)展包,但是,現(xiàn)在的圖形用戶界面基本都是基于Swing包開(kāi)發(fā)的。importjava.awt.*;importjavax.swing.*;Swing包的組件大部分是采用純Java語(yǔ)言進(jìn)行開(kāi)發(fā)的,這就大大增加了組件的可操作性,尤其是組件的外觀。通常情況下,只要通過(guò)改變所傳遞的參數(shù)的值,就可以改變組件的外觀,而且Swing包還提供LookandFeel功能,通過(guò)此功能可以動(dòng)態(tài)改變外觀。Swing包中也有一些組件不是用純Java語(yǔ)言編寫(xiě)的,這些組件一般用于直接和操作系統(tǒng)進(jìn)行交互的。二、與GUI(GraphicalUserInterface)有關(guān)的術(shù)語(yǔ)1、組件構(gòu)成圖形用戶界面的各種元素稱為組件,組件可以包括文本框、按鈕、列表框、對(duì)話框等。2、容器容器是圖形用戶界面中容納組件的部分,一個(gè)容器可容納一個(gè)或多個(gè)組件,甚至可以容納其他容器。容器與組件的關(guān)系就像杯子和水的關(guān)系。需要說(shuō)明的是,容器也可以被稱為組件。在任務(wù)1中的JFrame就是一個(gè)容器。3、布局管理器組件在被放到容器中時(shí),要遵循一定的布局方式。在Java的圖形用戶界面中,有專門的類來(lái)管理組件的布局,稱這些類為布局管理器。所謂的布局管理器,實(shí)際上就是能夠?qū)M件進(jìn)行布局管理的類。Swing概述三、AWT(AbstractWindowToolKit
抽象窗口工具包)事件處理機(jī)制1.事件處理機(jī)制的過(guò)程通過(guò)GUI組件,用戶可以對(duì)應(yīng)用程序進(jìn)行各種操作,反之,應(yīng)用程序可以通過(guò)GUI組件收集用戶的操作信息,如用戶在窗口上移動(dòng)了鼠標(biāo)、按下了鍵盤、點(diǎn)擊了按鈕等。如果我們單擊某個(gè)按鈕時(shí)執(zhí)行某種功能,就必須編寫(xiě)相應(yīng)的處理程序代碼。對(duì)于這種GUI程序與用戶操作的交互功能,Java使用了一種自己的專門方式,稱之為事件處理機(jī)制。
事件處理機(jī)制概述事件處理機(jī)制中的概念:事件:用戶對(duì)組件的一個(gè)操作,稱之為一個(gè)事件(Event)。如點(diǎn)擊按鈕會(huì)產(chǎn)生一個(gè)動(dòng)作(Action)事件、縮放或是關(guān)閉框架會(huì)產(chǎn)生一個(gè)窗口(Window)事件、移動(dòng)鼠標(biāo)會(huì)產(chǎn)生鼠標(biāo)移動(dòng)(MouseMotion)事件。事件源:發(fā)生事件的組件就是事件源。事件處理器:某個(gè)Java類中的負(fù)責(zé)處理事件的成員方法。三者之間的關(guān)系如圖所示。事件處理機(jī)制概述Java程序?qū)κ录M(jìn)行處理的方法是放在一個(gè)類對(duì)象中,這個(gè)類對(duì)象就是事件監(jiān)聽(tīng)器。Java中事件處理機(jī)制的一般過(guò)程是:
(1)事件監(jiān)聽(tīng)器注冊(cè)將一個(gè)事件監(jiān)聽(tīng)器對(duì)象同某個(gè)事件源的某種事件進(jìn)行關(guān)聯(lián),這樣,當(dāng)某個(gè)事件源上發(fā)生了某種時(shí)間后,關(guān)聯(lián)的事件監(jiān)聽(tīng)器對(duì)象中的有關(guān)代碼才會(huì)被執(zhí)行,這個(gè)關(guān)聯(lián)的過(guò)程稱為向事件源注冊(cè)事件監(jiān)聽(tīng)器對(duì)象。
(2)發(fā)生事件用戶操作了GUI組件,發(fā)生了某個(gè)事件。
(3)生成事件對(duì)象并處理發(fā)生事件后,組件就會(huì)產(chǎn)生一個(gè)相應(yīng)的事件對(duì)象,并把此對(duì)象傳遞給與之對(duì)應(yīng)的事件處理器,事件處理器就會(huì)執(zhí)行相應(yīng)的代碼來(lái)處理事件。事件處理機(jī)制概述2.事件分類事件用以描述發(fā)生了什么事情。AWT對(duì)各種不同的事件,按事件的動(dòng)作(如鼠標(biāo)操作、鍵盤操作)、效果(如窗口的關(guān)閉和激活)等進(jìn)行了分類,每一類事件對(duì)應(yīng)一個(gè)AWT事件類。AWT的事件類可以通過(guò)JDK文檔中的java.awt.event包進(jìn)行查閱,常見(jiàn)的事件類有:MouseEvent:對(duì)應(yīng)鼠標(biāo)的按下、釋放、點(diǎn)擊等事件。WindowEvent:對(duì)應(yīng)窗口的關(guān)閉、最小化、得到與失去焦點(diǎn)等窗口事件。
ActionEvent:對(duì)應(yīng)一個(gè)動(dòng)作事件,如菜單、按鈕被單擊或者鍵盤操作,則觸發(fā)一個(gè)動(dòng)作事件??梢岳斫鉃?,用戶的一個(gè)動(dòng)作導(dǎo)致了某個(gè)組件本身最基本的作用發(fā)生了,這就是ActionEvent事件。菜單、按鈕放在那里就是用來(lái)發(fā)出某種動(dòng)作或者命令的,鼠標(biāo)單擊(也可以用鍵盤來(lái)操作)這些組件,只是表示要執(zhí)行這種動(dòng)作或命令的事情發(fā)生了。事件處理機(jī)制概述3.事件監(jiān)聽(tīng)器接口某一類事件,其中又包含觸發(fā)這一事件的若干具體情況。對(duì)一類事件的處理由一個(gè)事件監(jiān)聽(tīng)器對(duì)象來(lái)完成,對(duì)于觸發(fā)這一事件的每一種情況,都對(duì)應(yīng)著事件監(jiān)聽(tīng)器對(duì)象的一個(gè)不同的方法。如窗口事件,對(duì)應(yīng)著WindowEvent事件對(duì)象,在這個(gè)對(duì)象里包含很多的方法,這些方法包括:
publicvoidwindowOpened(WindowEvente)
publicvoidwindowClosing(WindowEvente)
publicvoidwindowClosed(WindowEvente)
publicvoidwindowIconified(WindowEvente)
publicvoidwindowDeiconified(WindowEvente)
publicvoidwindowActivated(WindowEvente)
publicvoidwindowDeactivated(WindowEvente)
事件處理機(jī)制概述界面如下:舉例一完成步驟:1.創(chuàng)建工程文件2.設(shè)計(jì)界面3.編寫(xiě)代碼4.執(zhí)行常用組件介紹步驟:1.Filenewproject2.建立包常用組件介紹3.右擊包名newother常用組件介紹在設(shè)計(jì)圖形用戶界面時(shí),我們往往會(huì)用到一些組件,這些組件構(gòu)成GUI界面的元素。Swing對(duì)AWT進(jìn)行了擴(kuò)展,增加了AWT包下組件的功能,為了與原來(lái)組件進(jìn)行區(qū)別,在Swing包下的所有組件名稱都在原來(lái)名字的前面加了一個(gè)“J”。因此,在Java的圖形用戶界面中,以“J”為首字母的組件都?xì)w屬于Swing包1.JFrame組件是一種頂層(Top-Level)容器組件,Swing組件中還有其它頂層容器如: Jdialog:對(duì)話框 Japplet:用于設(shè)計(jì)嵌入網(wǎng)頁(yè)中的java小程序通過(guò)JFrame創(chuàng)建框架的常用方式有兩種: newJFrame(); newJFrame(Strings);其中Strings就是窗口的標(biāo)題。常用組件介紹JFrame類包含的方法:(1)設(shè)置窗口大小的方法
pack():根據(jù)所容納的組件自定義窗口的大小setSize(w,h):設(shè)置的窗口大小是固定的,不受組件的影響。
setBounds(x,y,w,h):設(shè)置窗口的大小,及窗口在屏幕上顯示的位置。其中x和y是設(shè)置窗口在屏幕上顯示的起始坐標(biāo),w和h是設(shè)置窗口的大小。
(2)標(biāo)題設(shè)置方法
setTitle(Strings):方法可以設(shè)置窗口的標(biāo)題。(3)設(shè)置窗口前景色和背景色方法
setForeground(Colorc):用于設(shè)置窗口前景色。setBackground(Colorc):用于設(shè)置窗口背景色。
例:win.setBackground(Color.blue);窗口背景色設(shè)置為藍(lán)色。
(4)顯示窗口方法
setVisible(booleanb):將窗口顯示在屏幕上。其中的參數(shù)是布爾值。當(dāng)參數(shù)值為true時(shí),顯示窗口;當(dāng)參數(shù)值為false時(shí),不顯示窗口。
常用組件介紹2.
JLabel標(biāo)簽通常是用來(lái)標(biāo)識(shí)另外一個(gè)組件的含義??梢栽跇?biāo)簽上顯示文字、圖像或是文字圖像的組合。相關(guān)的方法:setText():getText():setAlignment():getAlignment():setIcon(Iconimage):getIcon():setForeground(Colorc):setBackground(Colorc):常用組件介紹練習(xí)題目:設(shè)計(jì)如下圖所示的界面,并實(shí)現(xiàn)當(dāng)鼠標(biāo)點(diǎn)擊任何一個(gè)標(biāo)簽控件時(shí),都能實(shí)現(xiàn)另外兩個(gè)標(biāo)簽控件的文本互換。常用組件介紹3.文本輸入類組件文本框(JTextField)、密碼框(JPasswordField)、文本域(JTextArea)以及可編輯的組合框(JComboBox)等。JTextField控件:用戶只能輸入單行的文本,JTextArea控件:用戶可以輸入多行的文本。JPasswordField控件:用戶向密碼框中輸入文本時(shí),實(shí)際的輸入文本并不在密碼框中顯示,而是使用特殊的回顯字符(通常是'*')加以顯示。JComboBox控件:可預(yù)先設(shè)置候選的文本串,用戶可以方便地選擇合適的文本。當(dāng)候選的文本串均不合適時(shí),在可編輯狀態(tài)下,用戶可以向組合框中輸入文本,這也是把可編輯的組合框分類到文本輸入類組件的原因。對(duì)于不可編輯的組合框,可以歸類為選擇類組件。常用組件介紹例題1:常用組件介紹例題:2常用組件介紹文本框(JTextField)的相關(guān)方法:getText()方法,可以取得文本框中的文本內(nèi)容setText():設(shè)置文本區(qū)中的文本getSelectedText():獲取當(dāng)前被選定的文本Select(intstartIndex,intendIndex):選擇部分文本setEditable(booleanaValue)方法來(lái)設(shè)置文本框是否可編輯。isEditable():判定文本區(qū)的可編輯性。requestFocus():使文本框獲得焦點(diǎn)文本框的相關(guān)事件Caret:當(dāng)用戶使用鍵盤、鼠標(biāo)等移動(dòng)了文本光標(biāo)在JTextField中的位置時(shí)觸發(fā)這個(gè)事件常用組件介紹密碼框(JPasswordField)的相關(guān)方法
setEchoChar(charc):改變?nèi)笔〉幕仫@字符。
getPassword():取得密碼框中的文本,該方法返回的是一個(gè)char數(shù)組。如:
//創(chuàng)建了一個(gè)密碼框
JPasswordFieldtxtPwd=newJPasswrodField(20);
//設(shè)定該密碼框的回顯字符為'#'
txtPwd.setEchoChar('#')
//取得密碼框中的內(nèi)容
char[]pwd=txtPwd.getPassword();
//將char數(shù)組轉(zhuǎn)化為String類型的對(duì)象
StringpwdStr=newString(txtP.getPassword());
常用組件介紹文本域的相關(guān)方法:
setLineWrap(true):將文本域設(shè)置為自動(dòng)換行set
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB 28263-2024民用爆炸物品生產(chǎn)、銷售企業(yè)安全管理規(guī)程
- 南京駕校合同范例
- 合伙網(wǎng)店合同范例
- 場(chǎng)內(nèi)貨車出售合同范例
- 寵物衣服轉(zhuǎn)讓合同范例
- 深圳非全日制合同范例
- 投資地產(chǎn)協(xié)議合同范例
- 玉米訂單合同范例
- 波形護(hù)欄勞務(wù)合同范例
- 醫(yī)院車庫(kù)出售合同范例
- 噴淋系統(tǒng)安裝施工工藝方案
- 中建鐵路路基排水溝施工方案
- 固體廢物管理制度
- 摜蛋自學(xué)一本通
- 單位思想政治表現(xiàn)證明
- 電鍍廠安全常識(shí)培訓(xùn)
- 部編版語(yǔ)文四年級(jí)上冊(cè)第二單元類文閱讀理解題(含解析)
- Cmk設(shè)備能力指數(shù)分析表
- XX中學(xué)英語(yǔ)興趣社團(tuán)活動(dòng)教案(共8篇)
- 心房顫動(dòng)課件
- 超圖軟件三維平臺(tái)技術(shù)參數(shù)v8c2015r
評(píng)論
0/150
提交評(píng)論