圖形用戶界面設(shè)計_第1頁
圖形用戶界面設(shè)計_第2頁
圖形用戶界面設(shè)計_第3頁
圖形用戶界面設(shè)計_第4頁
圖形用戶界面設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目四

圖形用戶界面設(shè)計授課人:韓淑芹濰坊工程職業(yè)學校信息工程系Swing概述一、AWT包和Swing包Java語言提供的開發(fā)圖形用戶界面(GUI)的功能包括AWT(AbstractWindowToolkit)和Swing兩部分。這兩部分功能由Java的兩個包來完成——AWT和Swing。雖然這兩個包都是用于圖形用戶界面的開發(fā),但是它們不是同時被開發(fā)出來了。AWT包是最早被開發(fā)出來的。但是使用AWT包開發(fā)出來的圖形用戶界面并不完美,在使用上非常的不靈活。比如AWT包所包含的組件,其外觀是固定的,無法改變,這就使得開發(fā)出來的界面非常死板。這種設(shè)計是站在操作系統(tǒng)的角度開發(fā)圖形用戶界面,主要考慮的是程序與操作系統(tǒng)的兼容性。這樣做的最大問題就是靈活性差,而且程序在運行時還會消耗很多系統(tǒng)資源。由于AWT包的不足表現(xiàn),SUN公司于1998年針對它存在的問題,對其進行了擴展,開發(fā)出了Swing,即Swing包。但是,SUN公司并沒有讓swing包完成替代AWT包,而是讓這兩個包共同存在,互取所需。AWT包雖然存在缺點,但是仍然有可用之處,比如在圖形用戶界面中用到的布局管理器、事件處理等依然采用的是AWT包的內(nèi)容。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)有關(guān)的術(shù)語1、組件構(gòu)成圖形用戶界面的各種元素稱為組件,組件可以包括文本框、按鈕、列表框、對話框等。2、容器容器是圖形用戶界面中容納組件的部分,一個容器可容納一個或多個組件,甚至可以容納其他容器。容器與組件的關(guān)系就像杯子和水的關(guān)系。需要說明的是,容器也可以被稱為組件。在任務(wù)1中的JFrame就是一個容器。3、布局管理器組件在被放到容器中時,要遵循一定的布局方式。在Java的圖形用戶界面中,有專門的類來管理組件的布局,稱這些類為布局管理器。所謂的布局管理器,實際上就是能夠?qū)M件進行布局管理的類。Swing概述三、AWT(AbstractWindowToolKit

抽象窗口工具包)事件處理機制1.事件處理機制的過程通過GUI組件,用戶可以對應(yīng)用程序進行各種操作,反之,應(yīng)用程序可以通過GUI組件收集用戶的操作信息,如用戶在窗口上移動了鼠標、按下了鍵盤、點擊了按鈕等。如果我們單擊某個按鈕時執(zhí)行某種功能,就必須編寫相應(yīng)的處理程序代碼。對于這種GUI程序與用戶操作的交互功能,Java使用了一種自己的專門方式,稱之為事件處理機制。

事件處理機制概述事件處理機制中的概念:事件:用戶對組件的一個操作,稱之為一個事件(Event)。如點擊按鈕會產(chǎn)生一個動作(Action)事件、縮放或是關(guān)閉框架會產(chǎn)生一個窗口(Window)事件、移動鼠標會產(chǎn)生鼠標移動(MouseMotion)事件。事件源:發(fā)生事件的組件就是事件源。事件處理器:某個Java類中的負責處理事件的成員方法。三者之間的關(guān)系如圖所示。事件處理機制概述Java程序?qū)κ录M行處理的方法是放在一個類對象中,這個類對象就是事件監(jiān)聽器。Java中事件處理機制的一般過程是:

(1)事件監(jiān)聽器注冊將一個事件監(jiān)聽器對象同某個事件源的某種事件進行關(guān)聯(lián),這樣,當某個事件源上發(fā)生了某種時間后,關(guān)聯(lián)的事件監(jiān)聽器對象中的有關(guān)代碼才會被執(zhí)行,這個關(guān)聯(lián)的過程稱為向事件源注冊事件監(jiān)聽器對象。

(2)發(fā)生事件用戶操作了GUI組件,發(fā)生了某個事件。

(3)生成事件對象并處理發(fā)生事件后,組件就會產(chǎn)生一個相應(yīng)的事件對象,并把此對象傳遞給與之對應(yīng)的事件處理器,事件處理器就會執(zhí)行相應(yīng)的代碼來處理事件。事件處理機制概述2.事件分類事件用以描述發(fā)生了什么事情。AWT對各種不同的事件,按事件的動作(如鼠標操作、鍵盤操作)、效果(如窗口的關(guān)閉和激活)等進行了分類,每一類事件對應(yīng)一個AWT事件類。AWT的事件類可以通過JDK文檔中的java.awt.event包進行查閱,常見的事件類有:MouseEvent:對應(yīng)鼠標的按下、釋放、點擊等事件。WindowEvent:對應(yīng)窗口的關(guān)閉、最小化、得到與失去焦點等窗口事件。

ActionEvent:對應(yīng)一個動作事件,如菜單、按鈕被單擊或者鍵盤操作,則觸發(fā)一個動作事件??梢岳斫鉃?,用戶的一個動作導致了某個組件本身最基本的作用發(fā)生了,這就是ActionEvent事件。菜單、按鈕放在那里就是用來發(fā)出某種動作或者命令的,鼠標單擊(也可以用鍵盤來操作)這些組件,只是表示要執(zhí)行這種動作或命令的事情發(fā)生了。事件處理機制概述3.事件監(jiān)聽器接口某一類事件,其中又包含觸發(fā)這一事件的若干具體情況。對一類事件的處理由一個事件監(jiān)聽器對象來完成,對于觸發(fā)這一事件的每一種情況,都對應(yīng)著事件監(jiān)聽器對象的一個不同的方法。如窗口事件,對應(yīng)著WindowEvent事件對象,在這個對象里包含很多的方法,這些方法包括:

publicvoidwindowOpened(WindowEvente)

publicvoidwindowClosing(WindowEvente)

publicvoidwindowClosed(WindowEvente)

publicvoidwindowIconified(WindowEvente)

publicvoidwindowDeiconified(WindowEvente)

publicvoidwindowActivated(WindowEvente)

publicvoidwindowDeactivated(WindowEvente)

事件處理機制概述界面如下:舉例一完成步驟:1.創(chuàng)建工程文件2.設(shè)計界面3.編寫代碼4.執(zhí)行常用組件介紹步驟:1.Filenewproject2.建立包常用組件介紹3.右擊包名newother常用組件介紹在設(shè)計圖形用戶界面時,我們往往會用到一些組件,這些組件構(gòu)成GUI界面的元素。Swing對AWT進行了擴展,增加了AWT包下組件的功能,為了與原來組件進行區(qū)別,在Swing包下的所有組件名稱都在原來名字的前面加了一個“J”。因此,在Java的圖形用戶界面中,以“J”為首字母的組件都歸屬于Swing包1.JFrame組件是一種頂層(Top-Level)容器組件,Swing組件中還有其它頂層容器如: Jdialog:對話框 Japplet:用于設(shè)計嵌入網(wǎng)頁中的java小程序通過JFrame創(chuàng)建框架的常用方式有兩種: newJFrame(); newJFrame(Strings);其中Strings就是窗口的標題。常用組件介紹JFrame類包含的方法:(1)設(shè)置窗口大小的方法

pack():根據(jù)所容納的組件自定義窗口的大小setSize(w,h):設(shè)置的窗口大小是固定的,不受組件的影響。

setBounds(x,y,w,h):設(shè)置窗口的大小,及窗口在屏幕上顯示的位置。其中x和y是設(shè)置窗口在屏幕上顯示的起始坐標,w和h是設(shè)置窗口的大小。

(2)標題設(shè)置方法

setTitle(Strings):方法可以設(shè)置窗口的標題。(3)設(shè)置窗口前景色和背景色方法

setForeground(Colorc):用于設(shè)置窗口前景色。setBackground(Colorc):用于設(shè)置窗口背景色。

例:win.setBackground(Color.blue);窗口背景色設(shè)置為藍色。

(4)顯示窗口方法

setVisible(booleanb):將窗口顯示在屏幕上。其中的參數(shù)是布爾值。當參數(shù)值為true時,顯示窗口;當參數(shù)值為false時,不顯示窗口。

常用組件介紹2.

JLabel標簽通常是用來標識另外一個組件的含義??梢栽跇撕炆巷@示文字、圖像或是文字圖像的組合。相關(guān)的方法:setText():getText():setAlignment():getAlignment():setIcon(Iconimage):getIcon():setForeground(Colorc):setBackground(Colorc):常用組件介紹練習題目:設(shè)計如下圖所示的界面,并實現(xiàn)當鼠標點擊任何一個標簽控件時,都能實現(xiàn)另外兩個標簽控件的文本互換。常用組件介紹3.文本輸入類組件文本框(JTextField)、密碼框(JPasswordField)、文本域(JTextArea)以及可編輯的組合框(JComboBox)等。JTextField控件:用戶只能輸入單行的文本,JTextArea控件:用戶可以輸入多行的文本。JPasswordField控件:用戶向密碼框中輸入文本時,實際的輸入文本并不在密碼框中顯示,而是使用特殊的回顯字符(通常是'*')加以顯示。JComboBox控件:可預先設(shè)置候選的文本串,用戶可以方便地選擇合適的文本。當候選的文本串均不合適時,在可編輯狀態(tài)下,用戶可以向組合框中輸入文本,這也是把可編輯的組合框分類到文本輸入類組件的原因。對于不可編輯的組合框,可以歸類為選擇類組件。常用組件介紹例題1:常用組件介紹例題:2常用組件介紹文本框(JTextField)的相關(guān)方法:getText()方法,可以取得文本框中的文本內(nèi)容setText():設(shè)置文本區(qū)中的文本getSelectedText():獲取當前被選定的文本Select(intstartIndex,intendIndex):選擇部分文本setEditable(booleanaValue)方法來設(shè)置文本框是否可編輯。isEditable():判定文本區(qū)的可編輯性。requestFocus():使文本框獲得焦點文本框的相關(guān)事件Caret:當用戶使用鍵盤、鼠標等移動了文本光標在JTextField中的位置時觸發(fā)這個事件常用組件介紹密碼框(JPasswordField)的相關(guān)方法

setEchoChar(charc):改變?nèi)笔〉幕仫@字符。

getPassword():取得密碼框中的文本,該方法返回的是一個char數(shù)組。如:

//創(chuàng)建了一個密碼框

JPasswordFieldtxtPwd=newJPasswrodField(20);

//設(shè)定該密碼框的回顯字符為'#'

txtPwd.setEchoChar('#')

//取得密碼框中的內(nèi)容

char[]pwd=txtPwd.getPassword();

//將char數(shù)組轉(zhuǎn)化為String類型的對象

StringpwdStr=newString(txtP.getPassword());

常用組件介紹文本域的相關(guān)方法:

setLineWrap(true):將文本域設(shè)置為自動換行set

溫馨提示

  • 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

提交評論