第9章 GUI_教學(xué)設(shè)計(jì)_第1頁(yè)
第9章 GUI_教學(xué)設(shè)計(jì)_第2頁(yè)
第9章 GUI_教學(xué)設(shè)計(jì)_第3頁(yè)
第9章 GUI_教學(xué)設(shè)計(jì)_第4頁(yè)
第9章 GUI_教學(xué)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、博學(xué)谷讓IT教學(xué)更簡(jiǎn)單,讓IT學(xué)習(xí)更有效傳智播客Java基礎(chǔ)入門教學(xué)設(shè)計(jì)課程名稱: Java基礎(chǔ)入門 授課年級(jí): 2014年級(jí) 授課學(xué)期: 2014學(xué)年第一學(xué)期教師姓名: 某某老師 2014年02月09日課題名稱第9章 GUI計(jì)劃學(xué)時(shí)6 課時(shí)內(nèi)容分析GUI全稱是Graphical User Interface,就是應(yīng)用程序提供給用戶操作的圖形界面,包括窗口、菜單、按鈕、工具欄和其它各種圖形界面元素。Java中針對(duì)GUI設(shè)計(jì)提供了豐富的類庫(kù),這些類分別位于java.awt和javax.swing包中。本章針對(duì)AWT和Swing進(jìn)行詳細(xì)的講解。教學(xué)目標(biāo)及基本要求要求學(xué)生了解GUI開(kāi)發(fā)的相關(guān)原理和技

2、巧,掌握AWT事件處理、布局管理器、AWT繪圖,熟悉Swing組件的使用。重點(diǎn)及措施教學(xué)重點(diǎn): AWT事件處理、布局管理器、Swing組件的使用難點(diǎn)及措施教學(xué)難點(diǎn):AWT事件處理、布局管理器、Swing組件的使用教學(xué)方式教學(xué)采用教師課堂講授為主,使用教學(xué)PPT講解教學(xué)過(guò)程第一課時(shí)(AWT概述、事件處理機(jī)制、事件適配器、用匿名內(nèi)部類實(shí)現(xiàn)事件監(jiān)聽(tīng)事件處理)l AWT概述 AWT組成AWT是用于創(chuàng)建圖形用戶界面的一個(gè)工具包,它提供了一系列用于實(shí)現(xiàn)圖形界面的組件。在JDK中針對(duì)每個(gè)組件都提供了對(duì)應(yīng)的Java類,如下圖所示: Window Window類是不依賴其它容器而獨(dú)立存在的容器,它有兩個(gè)子類,分

3、別是Frame類和Dialog類。如下圖所示: Frame示例 Dialog示例 PanelPane容器只能存在其它容器(Window或其子類)中,一個(gè)Panel對(duì)象代表了一個(gè)長(zhǎng)方形的區(qū)域,在這個(gè)區(qū)域中可以容納其它組件,下圖是一個(gè)Panel組件:l 事件處理機(jī)制事件處理機(jī)制專門用于響應(yīng)用戶的操作,在學(xué)習(xí)如何使用AWT事件處理機(jī)制之前,首先介紹幾個(gè)比較重要的概念,具體如下所示:l 事件對(duì)象(Event):封裝了GUI組件上發(fā)生的特定事件。l 事件源(組件):事件發(fā)生的場(chǎng)所,通常就是產(chǎn)生事件的組件。l 監(jiān)聽(tīng)器(Listener):負(fù)責(zé)監(jiān)聽(tīng)事件源上發(fā)生的事件,并對(duì)各種事件做出響應(yīng)處理的對(duì)象(對(duì)象中包

4、含事件處理器)。l 事件處理器:監(jiān)聽(tīng)器對(duì)象對(duì)接收的事件對(duì)象進(jìn)行相應(yīng)處理的方法。l 事件適配器JDK提供了一些適配器類,它們是監(jiān)聽(tīng)器接口的默認(rèn)實(shí)現(xiàn)類,這些實(shí)現(xiàn)類中實(shí)現(xiàn)了接口的所有方法。程序可以通過(guò)繼承適配器類來(lái)達(dá)到實(shí)現(xiàn)監(jiān)聽(tīng)器接口的目的。例如,定義一個(gè)繼承適配器類WindowAdapter的類MyWindowAdapter,如果要實(shí)現(xiàn)關(guān)閉窗口的功能,需要對(duì)windowClosing()方法進(jìn)行重寫。l 用匿名內(nèi)部類實(shí)現(xiàn)事件處理實(shí)際開(kāi)發(fā)中,經(jīng)常通過(guò)匿名內(nèi)部類來(lái)創(chuàng)建事件監(jiān)聽(tīng)器對(duì)象,針對(duì)所發(fā)生的事件進(jìn)行處理。例如,為窗口添加一個(gè)具有點(diǎn)擊事件的按鈕,該按鈕用于退出程序,具體的實(shí)現(xiàn)代碼如下所示:import

5、 java.awt.*;import java.awt.event.*;public class Example04 public static void main(String args) Frame f = new Frame(我的窗體!);f.setSize(400, 300);f.setLocation(300, 200);f.setVisible(true);Button btn = new Button(EXIT); / 創(chuàng)建按鈕組件對(duì)象f.add(btn); / 把按鈕對(duì)象加載到窗口上/ 用內(nèi)部類的方式為按鈕組件注冊(cè)監(jiān)聽(tīng)器btn.addMouseListener(new Mous

6、eAdapter() public void mouseClicked(MouseEvent e) System.exit(0););當(dāng)按鈕被點(diǎn)擊時(shí),會(huì)把點(diǎn)擊事件作為對(duì)象傳遞給事件監(jiān)聽(tīng)器,作出退出程序的處理。第二課時(shí)(窗體事件、鼠標(biāo)事件、鍵盤事件和動(dòng)作事件、布局管理器)l 窗體事件當(dāng)對(duì)窗體進(jìn)行操作時(shí),比如窗體的打開(kāi)、關(guān)閉、激活、停用等,這些動(dòng)作都屬于窗體事件,JDK中提供了一個(gè)類WindowEvent用于表示這些窗體事件。l 鼠標(biāo)事件在圖形用戶界面中,用戶會(huì)經(jīng)常通過(guò)鼠標(biāo)來(lái)進(jìn)行選擇、切換界面等操作,這些操作被定義為鼠標(biāo)事件,其中包括鼠標(biāo)按下、鼠標(biāo)松開(kāi)、鼠標(biāo)單擊等。鼠標(biāo)事件使用MouseEvent

7、類表示,處理鼠標(biāo)事件需要通過(guò)實(shí)現(xiàn)MouseListener接口定義監(jiān)聽(tīng)器,也可以繼承適配器MouseAdapter類來(lái)實(shí)現(xiàn)。l 鍵盤事件例如鍵盤按下、釋放等,這些操作被定義為鍵盤事件。鍵盤事件使用KeyEvent類表示,處理鍵盤事件的監(jiān)聽(tīng)器對(duì)象需要實(shí)現(xiàn)KeyListener接口或者繼承KeyAdapter類。l 動(dòng)作事件動(dòng)作事件只是表示一個(gè)動(dòng)作發(fā)生了,不需要關(guān)心使用哪種方式對(duì)文件進(jìn)行關(guān)閉,只要是對(duì)關(guān)閉按鈕進(jìn)行操作,即觸發(fā)了動(dòng)作事件。動(dòng)作事件用ActionEvent類表示,處理ActionEvent事件的監(jiān)聽(tīng)器對(duì)象需要實(shí)現(xiàn)ActionListener接口。l 布局管理器組件不能單獨(dú)存在,必須放置

8、于容器當(dāng)中,而組件在容器中的位置和尺寸是由布局管理器來(lái)決定的。每個(gè)容器在創(chuàng)建時(shí)都會(huì)使用一種默認(rèn)的布局管理器,在程序中可以通過(guò)調(diào)用容器對(duì)象的setLayout()方法設(shè)置布局管理器,通過(guò)布局管理器來(lái)自動(dòng)進(jìn)行組件的布局管理。 FlowLayoutFlowLayout(流式布局管理器)下,容器會(huì)將組件按照添加順序從左向右放置。到達(dá)邊界時(shí),會(huì)自動(dòng)將組件放到下一行的開(kāi)始位置。FlowLayout有三個(gè)構(gòu)造方法,具體如下:方法聲明功能描述FlowLayout()組件默認(rèn)居中對(duì)齊,水平、垂直間距為5個(gè)單位FlowLayout(int align)指定組件的對(duì)齊方式,水平、垂直間距為5個(gè)單位FlowLayou

9、t(int align,int hgap,int vgap)指定組件的對(duì)齊方式和水平、垂直間距下列是一個(gè)FlowLayout布局管理器的示例: BorderLayoutBorderLayout(邊界布局管理器)將容器劃分為五個(gè)區(qū)域,分別是東(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。BorderLayout布局的效果如下圖所示。 GridLayoutGridLayout(網(wǎng)格布局管理器)使用縱橫線將容器分成n行m列大小相等的網(wǎng)格,每個(gè)網(wǎng)格中放置一個(gè)組件。 GridBagLayoutGridBagLayout(網(wǎng)格包布局管理器)與GridLayout布局

10、管理器類似,不同的是,它允許網(wǎng)格中的組件大小各不相同,而且允許一個(gè)組件跨越一個(gè)或者多個(gè)網(wǎng)格。使用GridBagLayout布局管理器的關(guān)鍵在于GridBagConstraints對(duì)象,它是控制容器中每個(gè)組件布局的核心類。GridBagConstraints的常用屬性如下所示:l gridx和 gridy:用于設(shè)置組件左上角所在網(wǎng)格的橫向和縱向索引。l gridwidth和gridheight:用于設(shè)置組件橫向、縱向跨越幾個(gè)網(wǎng)格。l fill:用于設(shè)置是否及如何改變組件大小。l weightx和weighty:設(shè)置組件在容器中的水平方向和垂直方向的權(quán)重。需要注意的是,如果希望組件的大小隨著容器的

11、增大而增大,必須同時(shí)設(shè)置GridBagConstraints對(duì)象的fill屬性和weightx、weighty屬性。 CardLayout卡片布局管理器(CardLayout)將界面看做一系列卡片,在任何時(shí)候只有其中一張卡片是可見(jiàn)的,這張卡片占據(jù)容器的整個(gè)區(qū)域。第三課時(shí)(AWT繪圖、JFrame、JDialog和中間容器)l AWT繪圖 Graphics類在java.awt包中專門提供了一個(gè)Graphics類,它相當(dāng)于一個(gè)抽象的畫筆,其中提供了各種繪制圖形的方法,使用Graphics類的方法就可以完成在組件上繪制圖形。Graphics的常用方法如下所示:l setColor()用于指定上下文顏

12、色,方法中接收一個(gè)Color類型的參數(shù)。l setFont()用于指定上下文字體,方法中接收一個(gè)Font類型的參數(shù)。l drawRect()和drawOval()方法用于繪制矩形和橢圓形的邊框,l fillRect()和fillOval()用于使用當(dāng)前顏色填充繪制完成的矩形和橢圓形。l drawString()用于繪制一段文本,第一個(gè)參數(shù)str表示繪制的文本內(nèi) 容,第二個(gè)和第三個(gè)參數(shù)x、y為繪制文本的左下角坐標(biāo)。l Swing簡(jiǎn)介大部分的Swing組件都是JComponent類的直接或者間接子類,而JComponent類是AWT中java.awt.Container的子類,接下來(lái)通過(guò)下圖來(lái)描述

13、AWT和Swing大部分組件的關(guān)聯(lián)關(guān)系:l JFrameJFrame是一個(gè)獨(dú)立存在的頂級(jí)窗口,不能放置在其它容器之中,Jframe支持通用窗口所有的基本功能,例如窗口最小化、設(shè)定窗口大小等等。 通過(guò)一個(gè)案例演示JFrame的效果:public Example15() this.setTitle(JFrameTest); this.setSize(200, 300); / 定義一個(gè)按鈕組件 JButton bt = new JButton(按鈕); / 設(shè)置流式布局管理器 this.setLayout(new FlowLayout(); / 添加按鈕組件 this.add(bt); / 設(shè)置點(diǎn)擊

14、關(guān)閉按鈕時(shí)的默認(rèn)操作 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); 運(yùn)行結(jié)果:JFrame類和Frame類最大的區(qū)別在于,JFrame類提供了關(guān)閉窗口的功能。l JDialogJDialog對(duì)話框可分為兩種:模態(tài)對(duì)話框和非模態(tài)對(duì)話框。所謂模態(tài)對(duì)話框是指用戶需要等到處理完對(duì)話框后才能繼續(xù)與其它窗口交互,而非模態(tài)對(duì)話框允許用戶在處理對(duì)話框的同時(shí)與其它窗口交互。Jdialog常用的構(gòu)造方法如下所示:方法聲明功能描述JDialog(Frame owner)創(chuàng)建非模態(tài)的對(duì)話框JDialog(Fram

15、e owner,String title)創(chuàng)建具有指定標(biāo)題的非模態(tài)對(duì)話框JDialog(Frameowner,boolean modal)創(chuàng)建一個(gè)有指定模式的無(wú)標(biāo)題對(duì)話框l 中間容器中間容器不能單獨(dú)存在,只能放置在頂級(jí)窗口中。常見(jiàn)的中間容器有兩種:l Jpanel:它是一個(gè)無(wú)邊框,不能被移動(dòng)、放大、縮小或者關(guān)閉的面板,它的默認(rèn)布局管理器是FlowLayout。也可以使用JPanel帶參數(shù)的構(gòu)造函數(shù)或者它的setLayout()方法為其制定布局管理器。l JscrollPane:JScrollPane是一個(gè)帶有滾動(dòng)條的面板容器,而且這個(gè)面板只能添加一個(gè)組件,如果想往JScrollPane面板中添

16、加多個(gè)組件,應(yīng)該先將組件添加到JPanel中,然后將JPanel添加到JScrollPane中。第四課時(shí)(文本組件、按鈕組件、JcomboBox、菜單組件)l 文本組件 JTextComponent文本組件用于接收用戶輸入的信息或向用戶展示信息,其中包括文本框(JTextField)、文本域(JTextArea)等,它們都有一個(gè)共同父類JtextComponent。JtextComponent提供了文本組件常用的方法,如下表所示:方法描述功能說(shuō)明String String getText()返回文本組件中所有的文本內(nèi)容String getSelectedText()返回文本組件中選定的文本內(nèi)容

17、void selectAll()在文本組件中選中所有內(nèi)容void setEditable()設(shè)置文本組件為可編輯或不可編輯void setText(String text)設(shè)置文本組件的內(nèi)容void replaceSelection(String content)用給定的內(nèi)容替換當(dāng)前選定的內(nèi)容 JTextFieldJTextField稱為文本框,它只能接收單行文本的輸入。創(chuàng)建一個(gè)文本框,示例代碼如下:inputField = new JTextField(20);獲取輸入的文本信息,示例代碼如下:String content = inputField.getText();將輸入的文本域內(nèi)容置為

18、空,示例代碼如下:inputField.setText(); JTextAreaJTextArea稱為文本域,它能接收多行的文本的輸入,使用JTextArea構(gòu)造方法創(chuàng)建對(duì)象時(shí)可以設(shè)定區(qū)域的行數(shù)、列數(shù)。 創(chuàng)建一個(gè)文本域,示例代碼如下:chatContent = new JTextArea(12, 34);設(shè)置文本域不可編輯,示例代碼如下:chatContent.setEditable(false);向文本域添加內(nèi)容,示例代碼如下:chatContent.append(向文本域添加內(nèi)容);l 按鈕組件 JCheckBoxJCheckBox組件被稱為復(fù)選框,它有選中(是)/未選中(非)兩種狀態(tài)。如

19、果復(fù)選框有多個(gè),則用戶可以選中其中一個(gè)或者多個(gè)。創(chuàng)建JCheckBox對(duì)象的常用的構(gòu)造方法如下表所示:方法描述功能說(shuō)明JCheckBox()創(chuàng)建一個(gè)沒(méi)有文本信息,初始狀態(tài)未被選中的復(fù)選框JCheckBox(String text)創(chuàng)建一個(gè)帶有文本信息,初始狀態(tài)未被選定的復(fù)選框JCheckBox(String text,boolean selected)創(chuàng)建一個(gè)帶有文本信息,并指定初始狀態(tài)(選中/未選中)的復(fù)選框。 JRadionButtonJRadioButton組件被稱為單選按鈕,與JCheckBox復(fù)選框不同的是,單選按鈕只能選中一個(gè)。創(chuàng)建JRadioButton對(duì)象常見(jiàn)的構(gòu)造方法如下所示

20、:方法描述功能說(shuō)明JRadioButton ()創(chuàng)建一個(gè)沒(méi)有文本信息、初始狀態(tài)未被選中的單選JRadioButton (String text)創(chuàng)建一個(gè)帶有文本信息、初始狀態(tài)未被選定的單選框JRadioButton (String text,boolean selected)創(chuàng)建一個(gè)具有文本信息,并指定初始狀態(tài)(選中/未選中)的單選框l JComboBoxJComboBox組件被稱為組合框或者下拉列表框,它將所有選項(xiàng)折疊收藏在一起,默認(rèn)顯示的是第一個(gè)添加的選項(xiàng)。當(dāng)用戶點(diǎn)擊組合框時(shí),會(huì)出現(xiàn)下拉式的選擇列表,用戶可以從中選擇其中一項(xiàng)并顯示。JComboBox常用方法有:l void addItem

21、(Object anObject):為組合框添加選項(xiàng)l void insertItemAt(Object anObject,int index):在指定的索引處插入選項(xiàng)l Objct getItemAt(int index):返回指定索引處選項(xiàng),第一個(gè)索引為0l int getItemCount():返回組合框中選項(xiàng)的數(shù)目l Object getSelectedItem():返回當(dāng)前所選項(xiàng)l void removeAllItems():刪除組合框中所有的選項(xiàng)l void removeItem(Object object):從組合框中刪除指定選項(xiàng)l void removeItemAt(int index):移除指定索引處的選項(xiàng)l void setEditable(boolean aFlag):設(shè)置組合框的選項(xiàng)是否可編輯,aFlag為true則可編輯,反之則不可編輯l 菜單組件 下拉式菜單創(chuàng)建下拉式菜單需要使用三個(gè)組件:JMenuBar(菜單欄)、JMenu(菜單)和JMenuItem(菜單項(xiàng)),以記事本為例,這三個(gè)組件在菜單中對(duì)應(yīng)的位置如下圖所示:(1)JMen

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論