第9章 Java圖形用戶界面_第1頁
第9章 Java圖形用戶界面_第2頁
第9章 Java圖形用戶界面_第3頁
第9章 Java圖形用戶界面_第4頁
第9章 Java圖形用戶界面_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java語言概述及編程基礎(chǔ)Java實用編程技術(shù)圖形用戶界面或圖形用戶接口(GraphicalUserInterface,GUI)是指采用圖形方式顯示的計算機操作環(huán)境用戶接口Java提供了一系列的用戶界面組件,這些組件主要包含在兩個包中,一個是抽象窗口工具包(AWT),包名為java.awt;另一個是Swing包,包名為java.swingJava中,圖形用戶界面由組件、布局管理和事件委托處理三部分組成圖形用戶界面Java實用編程技術(shù)組件是響應(yīng)用戶操作的可視圖形控件,它們置于容器組件中形成一個具有包含關(guān)系的層次結(jié)構(gòu),由布局管理器安排組件在容器中的位置能夠產(chǎn)生事件的組件稱事件源,不同的組件產(chǎn)生不同類型的事件,同一組件產(chǎn)可能產(chǎn)生多種事件能夠產(chǎn)生事件的組件稱事件源,不同的組件產(chǎn)生不同類型的事件,同一組件產(chǎn)可能產(chǎn)生多種事件圖形用戶界面Java實用編程技術(shù)創(chuàng)建一個圖形用戶界面的方法如下:(1)創(chuàng)建一個頂級的容器組件,一般是繼承框架(Frame)的應(yīng)用程序主窗口,它包含板框、標(biāo)題欄、控制菜單和內(nèi)容面板(Contentpane)的容器(2)按指定的布局管理器向容器中添加組件,給事件源組件添加事件監(jiān)視器,注冊事件處理(3)設(shè)計事件處理程序,重新處理方法(4)顯示圖形用戶界面圖形用戶界面Java實用編程技術(shù)組件是抽象的概念,通俗的說是一些符合某種規(guī)范的類或代碼組合在一起就構(gòu)成了組件,對外提供多個接口或方法供調(diào)用,從而完成某些特定的功能Java中所有的UI組件都是以Component類為根Swing是AWT的擴展,它提供了更強大和更靈活的組件集合與AWT組件不同,Swing組件實現(xiàn)不包括任何與平臺相關(guān)的代碼組件Java實用編程技術(shù)在javax.swing包中,定義了兩種類型的組件:頂層容器(JFrame,JApplet,JDialog和JWindow)和輕量級組件Swing組件都是AWT的Container類的直接子類和間接子類

java.awt.Component

-java.awt.Container

-java.awt.Window

-java.awt.Frame-javax.swing.JFrame

-javax.Dialog-javax.swing.JDialog

-javax.swing.JWindow

-java.awt.Applet-javax.swing.JApplet

-javax.swing.Box

-javax.swing.Jcomponet組件Java實用編程技術(shù)importjava.awt.*;importjavax.swing.*;classTestextendsJFrame{ publicFirstFrame(Stringtitle) { super(title); this.setSize(400,300); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}publicclassMainApp{ publicstaticvoidmain(String[]args) { newTest("GUI演示"); }}

組件Java實用編程技術(shù)三種文本組件JLable、JTextField、JTextAreaJlableJTextField這個組件與下一個JTextArea組件都比較復(fù)雜。這個組件是文本框,只能輸入單行的文本。當(dāng)文本區(qū)域的大小超出了可顯示的范圍時,在默認(rèn)情況下,不會自動出現(xiàn)滾動條JTextArea這個組件是文本區(qū)域,可以輸入多行文本。當(dāng)文本的區(qū)域超出的可顯示的范圍時,在默認(rèn)情況下,不會自動出現(xiàn)滾動條文本組件Java實用編程技術(shù)按鈕組件是以AbtractButton為父類當(dāng)在這些組件上單擊鼠標(biāo)或在這些組件獲得焦點時按回車鍵時,都會產(chǎn)生ActionEvent事件對象JButton()JCheckBox和JRadioButton這兩個組件對象都有一個是否被選中的狀態(tài)。我們通常是利用狀態(tài)變化時,它們會產(chǎn)生ItemEvent事件的特點來幫助達(dá)到目的的。而ItemEvent事件對象可以被ItemListener監(jiān)聽器對象接受到,前提條件就是將監(jiān)聽器對象向事件源對象注冊按鈕組件Java實用編程技術(shù)JComboBox組合框,它是由下拉列表與文本框組成。我們可以通過setEnable方法來設(shè)置該組合框?qū)ο竽芊癖痪庉?;通過addItem方法向該組合框?qū)ο笤黾禹椖?;通過方法getSelectedIndex獲得選擇到的項目的索引號;通過方法getSelectedItem獲得選擇到的項目;也可以在獲得項目索引的前提下,通過getItemAt方法獲得選擇到的項目列表組件Java實用編程技術(shù)Jlist這個列表框組件比較復(fù)雜。它可以多選也可以單選,這可以通過setSelectionMode方法來實現(xiàn),該方法的參數(shù)有效值為:ListSelectionModel.SINGLE_SELECTION:只能一次選擇一個項目。ListSelectionModel.SINGLE_INTERVAL_SELECTION:一次可以只選擇一個項目也可以一次同時選擇連續(xù)的多個項目列表組件Java實用編程技術(shù)JFrame類JFrame是在Swing中經(jīng)常使用到的組件,是最底層的容器,可以稱之為“窗口”。JFrame窗口允許指定關(guān)閉窗口的默認(rèn)模式。JFrame對象的布局管理器默認(rèn)為邊界布局管理器JPanel類面板也是java中常用到的容器之一,JPanel除了可以讓組件加入外,還可以將JPane作為組件加入到JFrame中去。JPanel中不僅可以添加組件,還可以添加其它面板。JPanel默認(rèn)使用流式布局管理器窗口及面板組件Java實用編程技術(shù)創(chuàng)建一個能夠顯示標(biāo)題和內(nèi)容的界面。標(biāo)簽JLabel用來顯示標(biāo)題,而JTextField文本框用來顯示內(nèi)容運行程序的結(jié)果見圖具體程序代碼見課本相應(yīng)章節(jié)實例Java實用編程技術(shù)在Swing組件的GUI應(yīng)用程序中,作為框架用的有四個重量級組件,它們分別是JFrame、JApplet、JWindow、Jdialog當(dāng)一個組件加入一個容器時,組件可以向與該容器相關(guān)的布局管理器對象提供自己希望的尺寸和排列方式對于四個框架組件來說,其中包含容器的默認(rèn)布局管理器是BorderLayout;對于JPanel容器來說,其默認(rèn)的布局管理器是FlowLayout簡介Java實用編程技術(shù)采用從左向右、從上向下的順序來排列其中的組件,如果一行已滿,則開始下一行。在默認(rèn)的情況下,采用居中對齊的方式來排列組件,組件間的間隔為5個象素FlowLayout共定義了5個常量用來指明組件對齊方式FlowLayout.LEADING:與開始一邊對齊FlowLayout.TRAILING:與結(jié)束一邊對齊FlowLayout.CENTER:居中對齊FlowLayout.LEFT:左對齊FlowLayout.RIGHT:右對齊FlowLayout順序布局Java實用編程技術(shù)這是一個區(qū)域布局。它將整個容器分為東西南北中五個區(qū)域,每個區(qū)域加入一個組件,如果在同一個區(qū)域加入二個或二個以上的組件時,最后加入的組件將覆蓋前面加入的組件。在加入組件時,需要指明將要加入到的區(qū)域一個BorderLayout有5個區(qū)域PAGE_START;PAGE_END;LINE_START;LINE_END;CENTER;BorderLayout邊框布局Java實用編程技術(shù)這是一個網(wǎng)格布局。它將整個容器分為n行m列共n×m個大小相同的小格。在默認(rèn)的情況下,小格之間的間隔為0。每一個小格可以放置一個組件可以通過構(gòu)造方法來設(shè)置小格的數(shù)量和小格之間的空隙GridLayout的布局方式將容器按用戶的設(shè)置平均劃分成若干個網(wǎng)格,其中的每一格稱為一個“單元格”GridLayout布局管理器默認(rèn)組件的水平間距和垂直間距均為0像素,可以通過GridLayout類的方法setHgap(inthgap)和setVgap(intvgap)設(shè)置組件的水平間距和垂直間距GridLayout網(wǎng)格布局Java實用編程技術(shù)該實例演示了一個圖形界面的實現(xiàn),有窗口、標(biāo)簽、按鈕、輸入文本框等組件,同時規(guī)定了這些組件的布局應(yīng)用程序的運行結(jié)果具體程序代碼見課本相應(yīng)章節(jié)應(yīng)用布局管理器的實例Java實用編程技術(shù)Java中處理事件的方法是基于授權(quán)事件模型的,這種模型定義了標(biāo)準(zhǔn)一致的機制去產(chǎn)生和處理事件。它的概念十分簡單:一個源產(chǎn)生一個事件并把它送到一個或多個的監(jiān)聽器那里在授權(quán)事件模型中,監(jiān)聽器為了接受一個事件通知必須注冊事件是指在授權(quán)事件模型中,一個事件是一個描述了事件源的狀態(tài)改變的對象。事件處理機制Java實用編程技術(shù)事件源是一個產(chǎn)生事件的對象。當(dāng)這個對象內(nèi)部的狀態(tài)以某種方式改變時,事件就會產(chǎn)生一些事件源可能只允許注冊一個監(jiān)聽器。一個事件源必須也提供一個允許監(jiān)聽器注銷一個特定事件的方法事件監(jiān)聽器是一個事件監(jiān)聽器是一個在事件發(fā)生時被通知的對象。它有兩個要求。首先,為了可以接受到特殊類型事件的通知它必須在事件源中已經(jīng)被注冊。第二,它必須實現(xiàn)接受和處理通知的方法事件處理機制Java實用編程技術(shù)Java事件處理機制的核心是這些代表事件的類。事件類提供一個一致而又易用的封裝事件的方法在java.util中被封裝的EventObject類是Java事件類層次結(jié)構(gòu)的根節(jié)點。它是所有事件類的父類在java.awt包中被定義的AWTEvent類是EventObject類的子類。同時作為所有基于awt的事件的父類(不論直接還是間接),它在授權(quán)事件模型中被使用java.awt.event包定義了一些能被各種用戶接口單元產(chǎn)生的事件類型事件類Java實用編程技術(shù)事件類描述ActionEvent通常在按下一個按鈕,雙擊一個列表項或者選中一個菜單項時發(fā)生AdjustmentEvent當(dāng)操作一個滾動條時發(fā)生ComponentEvent當(dāng)一個組件隱藏,移動,改變大小或成為可見時發(fā)生ContainerEvent當(dāng)一個組件從容器中加入或刪除時發(fā)生FocusEvent當(dāng)一個組件獲得或失去鍵盤焦點時發(fā)生InputEvent所有組件的輸入事件的抽象超類ItemEvent當(dāng)一個復(fù)選框或列表項被點擊時發(fā)生;當(dāng)一個選擇框或一個可選擇菜單的項被選擇或取消時發(fā)生事件類Java實用編程技術(shù)事件類描述KeyEvent當(dāng)輸入從鍵盤獲得時發(fā)生MouseEvent當(dāng)鼠標(biāo)被拖動,移動,點擊,按下,釋放時發(fā)生;或者在鼠標(biāo)進(jìn)入或退出一個組件時發(fā)生TextEvent當(dāng)文本區(qū)和文本域的文本改變時發(fā)生WindowEvent當(dāng)一個窗口激活,關(guān)閉,失效,恢復(fù),最小化,打開或退出時發(fā)生事件類Java實用編程技術(shù)事件源描述Button在按鈕被按下時產(chǎn)生動作事件Checkbox在復(fù)選框被選中或取消時產(chǎn)生項目事件Choice在選擇項改變時產(chǎn)生項目事件List在一項被雙擊時,產(chǎn)生動作事件,被選擇或取消時產(chǎn)生項目事件Menuitem菜單項被選中時產(chǎn)生動作事件,當(dāng)可復(fù)選菜單項被選中或取消時產(chǎn)生項目事件Scrollba在滾動條被拖動時產(chǎn)生調(diào)整事件Textcomponents當(dāng)用戶輸入字符時產(chǎn)生文本事件Window窗口被激活,關(guān)閉,失效,恢復(fù),最小化,打開或退出時產(chǎn)生窗口事件事件源Java實用編程技術(shù)接口描述ActionListener定義了一個接受動作事件的方法AdjustmentListener定義了一個接受調(diào)整事件的方法ComponentListener定義了四個方法來識別何時隱藏、移動、改變大小、顯示組件ContainerListener定義了兩個方法來識別何時從容器中加入或除去組件FocusListener定義了兩個方法來識別何時組件獲得或失去焦點ItemListener定義了一個方法來識別何時項目狀態(tài)改變KeyListener定義了三個方法來識別何時鍵按下、釋放和鍵入字符事件監(jiān)聽器Java實用編程技術(shù)接口描述MouseListener定義了五個方法來識別何時鼠標(biāo)單擊,進(jìn)入組件,離開組件,按下和釋放事件MouseMotionListener定義了兩個方法來識別何時鼠標(biāo)拖動和移動TextListener定義了一個方法來識別何時文本值改變WindowListener定義了七個方法來識別何時窗口激活、關(guān)閉、失效、最小化、還原、打開和退出監(jiān)聽器Java實用編程技術(shù)利用授權(quán)事件模型來編寫簡單的GUI應(yīng)用程序。只需要如下所示兩步:(1)在監(jiān)聽器中實現(xiàn)相應(yīng)的監(jiān)聽器接口,以便接受相應(yīng)的事件;(2)實現(xiàn)注冊或注銷(如果必要)監(jiān)聽器的代碼,以便可以得到事件的通知一個事件源可能產(chǎn)生多種類型的事件。每一個事件都必須分別注冊事件處理實現(xiàn)Java實用編程技術(shù)為了明白授權(quán)事件模型實際上是如何工作的,我們將分析一個例子,在這個例子中處理了兩個最常用的事件產(chǎn)生器:鼠標(biāo)和鍵盤程序概述:程序在窗體上顯示了鼠標(biāo)的當(dāng)前坐標(biāo)。每當(dāng)鼠標(biāo)按鈕被按下,在鼠標(biāo)指針?biāo)诘奈恢脤@示“按下”。而當(dāng)鼠標(biāo)按鈕釋放時,將顯示“釋放”。如果鼠標(biāo)按鈕被點擊,將顯示“單擊”。當(dāng)鼠標(biāo)進(jìn)入或退出窗體時,在窗體的顯示區(qū)域的左上角將顯示一個消息。當(dāng)你拖動鼠標(biāo)時,跟隨著被拖動的鼠標(biāo)一個“*”字符將被顯示事件處理實現(xiàn)Java實用編程技術(shù)兩個變量:x和y,它們存放著在鼠標(biāo)的按下,釋放或拖動事件發(fā)生時鼠標(biāo)的位置。坐標(biāo)將在paint()方法中被使用,以便在這些事件發(fā)生的點顯示輸出應(yīng)用程序的運行結(jié)果具體程序見課本相應(yīng)章節(jié)事件處理實現(xiàn)Java實用編程技術(shù)程序說明:MouseEventDemo類擴展JFrame類,同時實現(xiàn)了MouseListener接口和MouseMotionListener接口在構(gòu)造方法中,這個程序注冊自己為鼠標(biāo)事件的監(jiān)聽器。這些是通過調(diào)用addMouseListener()方法和addMouseMotionListener()方法來實現(xiàn)的,它們是類的成員方法程序?qū)崿F(xiàn)了在MouseListener接口和MouseMotionListener接口中定義的所有方法,以便對這些鼠標(biāo)事件進(jìn)行處理事件處理實現(xiàn)Java實用編程技術(shù)我們可以采用與在前面鼠標(biāo)事件范例相同的結(jié)構(gòu)去處理鍵盤事件。當(dāng)然,必須實現(xiàn)相應(yīng)的KeyListener接口每次用戶按下一個鍵時,通常有兩個或三個事件被產(chǎn)生在程序處理鍵盤事件之前,必須要獲得輸入焦點。通過調(diào)用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論