《Java面向?qū)ο蟪绦蛟O(shè)計第6章 圖形用戶界面》由會員分享,可在線閱讀,更多相關(guān)《Java面向?qū)ο蟪绦蛟O(shè)計第6章 圖形用戶界面(27頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Java圖形用戶界面(GUI)主要內(nèi)容圖形用戶界面開發(fā)包:AWT 包及Swing包掌握創(chuàng)建GUI 程序的基本方法掌握使用布局管理器進行界面布局的基本方法掌握 Swing包中常用組件的基本用法掌握J(rèn)ava事件處理機制Java中開發(fā)圖形用戶界面的資源n界面元素:容器和組件qjava.awt包qjava.swing包n布局:q常用布局管理類:java.awtq新增布局管理類:java.swingn事件處理:q常用事件處理類或接口:java.awt.eventq新增事件處理類或接口:Java.swing.eventJava GUI組件nAWT(Abstract Window Toolkit):早期版本
2、。q包為:java.awtq其優(yōu)點是:簡單、系統(tǒng)開銷小;但是它開發(fā)出來的應(yīng)用程序移植性差,而且不如Windows自帶的程序看起來精美。nSwing: Java1.2版本正式加入的新圖形用戶版本。q包為:javax.swingq優(yōu)點是:不包含任何與平臺有關(guān)的本地代碼,基于swing的應(yīng)用程序具有很好的可移植性;具有比AWT更為豐富的組件;組件的形式也可以多樣化;使用MVC體系結(jié)構(gòu)進行設(shè)計;AWT組件和swing組件的關(guān)系n幾乎所有的AWT組件都有對應(yīng)的swing組件,swing組件名前多一個字母“J”。nSwing對AWT組件進行了修改,且增加了新的組件。n本課程我們使用swing組件開發(fā)圖形用
3、戶界面。使用swing開發(fā)GUI所需的資源n開發(fā)圖形用戶界面程序通常需導(dǎo)入:qimport javax.swing.*; qimport java.awt.*; qimport java.awt.event.*; Gui程序框架nimport javax.swing.*; /引入GUI包npublic class MyFirstGUI extends JFrame npublic MyFirstGUI()nsuper(我的第一個窗口程序 ); /調(diào)用父類Jframe的構(gòu)造器方法nnpublic static void main(String args)nMyFirstGUI w1=new My
4、FirstGUI();nw1.setSize(300,150); /設(shè)置窗口大小nw1.setVisible(true); /顯示窗口nn向JFrame中添加組件步驟n1.創(chuàng)建組件對象q如:JLabel jL1=new JLabel(歡迎光臨);n2.獲得添加的目標(biāo)容器qContainer w1Container=w1.getContentPane(); n3.將組件添加到容器中qw1Container.add(jL1); 布局管理在容器中的所有組件的布局(位置和大?。┯稍谌萜髦械乃薪M件的布局(位置和大?。┯刹季止芾砥鱽砜刂疲诓季止芾砥鱽砜刂疲趈avajava中提供了許多布中提供了許多布
5、局管理器,我們介紹以下幾種布局方式局管理器,我們介紹以下幾種布局方式. .nFlowLayoutnBorderlayoutnGridLayoutn手工布局手工布局設(shè)置布局管理器n每個容器擁有自己默認(rèn)的布局管理器。ContentPane的默認(rèn)布局是的默認(rèn)布局是BorderLayout。n如果不希望使用默認(rèn)布局,則可使用所有容器如果不希望使用默認(rèn)布局,則可使用所有容器的父類的父類Container的的setLayout()方法改變。例方法改變。例如:如:JPanel pane=new JPanel(); pane.setLayout(new BorderLayout);組件布局方法1.順序布局順序
6、布局(FlowLayout):將組件按從左至右,:將組件按從左至右,從上到下的順序逐個放置。從上到下的順序逐個放置。2.邊界布局邊界布局(BorderLayout),把容器分為把容器分為5個區(qū):北個區(qū):北區(qū)、南區(qū)、東區(qū)、西區(qū)、中區(qū)。組件可以指定自區(qū)、南區(qū)、東區(qū)、西區(qū)、中區(qū)。組件可以指定自己放在那個區(qū),因為只有己放在那個區(qū),因為只有5個區(qū),所以最多容納個區(qū),所以最多容納5個組件。個組件。3.網(wǎng)格布局網(wǎng)格布局(GridLayout),把容器區(qū)域分成若干個把容器區(qū)域分成若干個網(wǎng)格,每個網(wǎng)格放置一個組件,適合數(shù)量眾多的網(wǎng)格,每個網(wǎng)格放置一個組件,適合數(shù)量眾多的組件。在創(chuàng)建網(wǎng)格布局時,可以給出網(wǎng)格的行數(shù)
7、組件。在創(chuàng)建網(wǎng)格布局時,可以給出網(wǎng)格的行數(shù)和列數(shù)。和列數(shù)。手工布局n設(shè)置布局為手工布局q如:w1Container.setLayout(null); n設(shè)置組件顯示的位置和大小q如1:jL1.setBounds(10,20,100,20); q如2:jL2.setBounds(20,40,100,20); 布局中JPanel的使用nJPanel是一個中間級容器組件,可以容納其它的組件。n靈活使用JPanel,可以設(shè)計出較復(fù)雜的圖形用戶界面。事件處理nimport javax.swing.*; nimport java.awt.*;npublic class MyFirstEvent exten
8、ds JFramenpublic MyFirstEvent()nsuper(事件處理機制); n npublic static void main(String args)nMyFirstEvent w1=new MyFirstEvent();nContainer w1Container=w1.getContentPane();nw1Container.setLayout(null);nJLabel jL1=new JLabel(歡迎訪問,請點擊下面的按鈕);n jL1.setBounds(50,20,200,30);n w1Container.add(jL1);nJButton jB1=ne
9、w JButton(被按下偶數(shù)次);njB1.setBounds(60,60,150,30);nw1Container.add(jB1);nw1.setSize(300,150);nw1.setVisible(true);nn事件處理中的4要素n事件源:產(chǎn)生事件的組件n事件n事件監(jiān)聽器:負(fù)責(zé)監(jiān)聽事件的程序n事件服務(wù)程序 :針對具體事件的處理代碼事件處理機制添加事件處理步驟:n(1)為組件注冊事件監(jiān)聽器:q如:addActionListener(this)n(2)編寫事件監(jiān)聽器類,要求實現(xiàn)相關(guān)的事件監(jiān)聽器接口。并在事件監(jiān)聽器類中實現(xiàn)特定方法。n(3)并在事件監(jiān)聽器類中實現(xiàn)特定方法。n注:常用事件
10、處理接口包含在java.awt.event包中,因此,程序必須引入該包。事件服務(wù)類的建立n事件服務(wù)類必須實心相應(yīng)的事件監(jiān)聽器接口或繼承適配器類。事件監(jiān)聽器接口事件監(jiān)聽器接口 適配器適配器Adapter類類 WindowListener WindowAdapter MouseMotionLister MouseMotionAdapter MouseListener MouseAdapter KeyListener KeyAdapter FocusListenerFocusAdapter ActionListener ItemListenerAdjustmentListener常用組件的使用nFo
11、nt和Color n標(biāo)簽和按鈕 n文本輸入框和密碼輸入框 n單選按鈕和復(fù)選框 n下拉菜單 n菜單 n對話框 n文件框 Font、Color、標(biāo)簽和按鈕應(yīng)用實例 n實例:當(dāng)我們點擊“顏色變化”按鈕時,“歡迎光臨”的顏色在紅與蘭色之間變換,當(dāng)點擊“推出”按鈕時,退出應(yīng)用程序。 n程序:MyButtonExample.java文本輸入框和密碼輸入框應(yīng)用實例n實例:當(dāng)我們輸入正確的用戶名和密碼(“JAVA”和“1234”)時,系統(tǒng)提示正確信息,否則提示錯誤信息。 n程序:MyFieldExample.java單選按鈕和復(fù)選框應(yīng)用實例n實例:當(dāng)我們在文本框中輸入數(shù)值,并按回車鍵時,系統(tǒng)能根據(jù)當(dāng)前所選擇的
12、運算符進行運算,并將結(jié)果以選擇的狀態(tài)進行顯示。 n程序:MyRadioButtonEvent.java下拉菜單應(yīng)用實例 n實例:制作1個簡單的省會查詢器。當(dāng)我們選擇不同的省份時,能將該省份的省會給顯示出來。n程序:MyItemEvent.java菜單應(yīng)用實例n實例:完成一個“文件編輯”的基本界面。當(dāng)我們選擇不同的菜單時,系統(tǒng)能顯示你所選擇的菜單,當(dāng)選擇“退出”時,退出應(yīng)用程序 n程序:MyMenuExample.java標(biāo)準(zhǔn)對話框應(yīng)用實例自定義對話框應(yīng)用實例n實例:針對上例,我們做一個修改,當(dāng)我們進入到登陸窗口,選擇“注冊”按鈕時,系統(tǒng)進入“用戶注冊”對話框,在該對話框中,可以顯示用戶在登陸窗口的昵稱,并要求“重輸密碼”,當(dāng)“重輸密碼”與登陸窗口的密碼一致時,給出“注冊成功”,否則顯示“不成功”。n程序: MyDialog.java 文件框應(yīng)用n實例:在前面設(shè)計的菜單項目中,加入文件框,當(dāng)我們選擇“打開”時,能彈出下所示的文件對話框。