亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java編程中應用的GUI設計基礎

2019-11-26 14:56:48
字體:
來源:轉載
供稿:網友

早先程序使用最簡單的輸入輸出方式,用戶在鍵盤輸入數據,程序將信息輸出在屏幕上?,F代程序要求使用圖形用戶界面(Graphical User Interface,GUI),界面中有菜單、按鈕等,用戶通過鼠標選擇菜單中的選項和點擊按鈕,命令程序功能模塊。本章學習如何用Java語言編寫GUI科學試驗,如何通過GUI實現輸入和輸出。
AWT和Swing

先前用Java編寫GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).現在多用Swing。Swing可以看作是AWT的改良版,而不是代替AWT,是對AWT的提高和擴展。所以,在寫GUI程序時,Swing和AWT都要作用。它們共存于Java基礎類(Java Foundation Class,JFC)中。

盡管AWT和Swing都提供了構造圖形界面元素的類,但它們的重要方面有所不同:AWT依賴于主平臺繪制用戶界面組件;而Swing有自己的機制,在主平臺提供的窗口中繪制和管理界面組件。Swing與AWT之間的最明顯的區別是界面組件的外觀,AWT在不同平臺上運行相同的程序,界面的外觀和風格可能會有一些差異。然而,一個基于Swing的應用程序可能在任何平臺上都會有相同的外觀和風格。

Swing中的類是從AWT繼承的,有些Swing類直接擴展AWT中對應的類。例如,JApplet、JDialog、JFrame和JWindow。

使用Swing設計圖形界面,主要引入兩個包:

  1. javax.swing包:包含Swing的基本類;
  2. java.awt.event包:包含與處理事件相關的接口和類。

由于Swing太豐富,不可能在一本教科書中給出Swing的全面介紹,但本章所介紹的有關Swing的知識,已足以讓讀者編寫相當精美的GUI程序。
組件和容器

組件(component)是圖形界面的基本元素,用戶可以直接操作,例如按鈕。容器(Container)是圖形界面的的復合元素,容器可以包含組件,例如面板。

Java語言為每種組件都預定義類,程序通過它們或它們的子類各種組件對象,如,Swing中預定義的按鈕類JButton是一種類,程序創建的JButton對象,或JButton子類的對象就是按鈕。Java語言也為每種容器預定義類,程序通過它們或它們的子類創建各種容器對象。例如,Swing中預定義的窗口類JFrame是一種容器類,程序創建的JFrame或JFrame子類的對象就是窗口。

為了統一管理組件和容器,為所有組件類定義超類,把組件的共有操作都定義在Component類中。同樣,為所有容器類定義超類Container類,把容器的共有操作都定義在Container類中。例如,Container類中定義了add()方法,大多數容器都可以用add()方法向容器添加組件。

Component、Container和Graphics類是AWT庫中的關鍵類。為能層次地構造復雜的圖形界面,容器被當作特殊的組件,可以把容器放入另一個容器中。例如,把若干按鈕和文本框分放在兩個面板中,再把這兩個面板和另一些按鈕放入窗口中。這種層次地構造界面的方法,能以增量的方式構造復雜的用戶界面。
事件驅動程序設計基礎

1.事件、監視器和監視器注冊
圖形界面上的事件是指在某個組件上發生用戶操作。例如,用戶單擊了界面上的某個按鈕,就說在這個按鈕上發生了事件,這個按鈕對象就是事件的擊發者。對事件作監視的對象稱為監視器,監視器提供響應事件的處理方法。為了讓監視器與事件對象關聯起來,需要對事件對象作監視器注冊,告訴系統事件對象的監視器。

以程序響應按鈕事件為例,程序要創建按鈕對象,把它添加到界面中,要為按鈕作監視器注冊,程序要有響應按鈕事件的方法。當“單擊按鈕”事件發生時,系統就調用已為這個按鈕注冊的事件處理方法,完成處理按鈕事件的工作。

2.實現事件處理的途征
java語言編寫事件處理程序主要有兩種方案:一個是程序重設handleEvent(Eventevt),采用這個方案的程序工作量稍大一些;另一個方案是程序實現一些系統設定的接口。java按事件類型提供多種接口,作為監視器對象的類需要實現相應的接口,即實現響應事件的方法。當事件發生時,系統內設的handleEvent(Event evt)方法就自動調用監視器的類實現的響應事件的方法。

java.awt.event包中用來檢測并對事件做出反應的模型包括以下三個組成元素:
源對象:事件“發生”這個組件上,它與一組“偵聽”該事件的對象保持著聯系。
監視器對象:一個實現預定義的接口的類的一個對象,該對象的類要提供對發生的事件作處理的方法。
事件對象:它包含描述當事件發生時從源傳遞給監視器的特定事件的信息。

一個事件驅動程序要做的工作除創建源對象和監視器對象之外,還必須安排監視器了解源對象,或向源對象注冊監視器。每個源對象有一個已注冊的監視器列表,提供一個方法能向該列表添加監視器對象。只有在源對象注冊了監視器之后,系統才會將源對象上發生的事件通知監視器對象。

3.事件類型和監視器接口
在java語言中,為了便于系統管理事件,也為了便于程序作監視器注冊,系統將事件分類,稱為事件類型。系統為每個事件類型提供一個接口。要作為監視器對象的類必須實現相應的接口,提供接口規定的響應事件的方法。

再以程序響應按鈕事件為例,JButton類對象button可以是一個事件的激發者。當用戶點擊界面中與button對應的按鈕時,button對象就會產生一個ActionEvent類型的事件。如果監視器對象是obj,對象obj的類是Obj,則類Obj必須實現AWT中的ActionListener接口,實現監視按鈕事件的actionPerformed方法。button對象必須用addActionListener方法注冊它的監視器obj。

程序運行時,當用戶點擊button對象對應的按鈕時,系統就將一個ActionEvent對象從事件激發對象傳遞到監視器。ActionEvent對象包含的信息包括事件發生在哪一個按鈕,以及有關該事件的其他信息。

下表給出有一定代表性的事件類型和產生這些事件的部分Swing組件。實際事件發生時,通常會產生一系列的事件,例如,用戶點擊按鈕,會產生ChangeEvent事件提示光標到了按鈕上,接著又是一個ChangeEvent事件表示鼠標被按下,然后是ActionEvent事件表示鼠標已松開,但光標依舊在按鈕上,最后是ChangeEvent事件,表示光標已離開按鈕。但是應用程序通常只處理按下按鈕的完整動作的單個ActionEvent事件。

每個事件類型都有一個相應的監視器接口,表11-2列出了每個接口的方法。實現監視器接口的類必須實現所有定義在接口中的方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品福利电影| 在线视频一区二区| 国产精品av免费在线观看| 日av在线播放中文不卡| 国产精品视频免费在线观看| 日韩中文字在线| 成人福利视频在线观看| 91九色国产社区在线观看| 欧美另类交人妖| 最近中文字幕2019免费| 成人在线一区二区| 欧美激情极品视频| 日韩精品丝袜在线| 韩国欧美亚洲国产| 亚洲成人黄色网| 欧美久久久精品| 日本久久久久亚洲中字幕| 国产精品视频免费在线观看| 91久久久久久| 日本亚洲欧美三级| 黑丝美女久久久| 一本色道久久综合狠狠躁篇的优点| 综合国产在线视频| 亚洲毛片在线看| 精品欧美激情精品一区| 亚洲国产成人精品一区二区| 日韩成人在线免费观看| 亚洲xxxx3d| 国产亚洲精品激情久久| 国内精品美女av在线播放| 久久精品国产久精国产一老狼| 亚洲男人av在线| 韩国国内大量揄拍精品视频| 国产一区二区黄| 日韩欧美一区二区在线| 国产精品视频一区二区高潮| 亚洲视频999| 久久久久北条麻妃免费看| 日韩视频免费观看| 精品久久香蕉国产线看观看gif| 亚洲一区二区福利| 欧美中文在线视频| 日本成人激情视频| 日产日韩在线亚洲欧美| 国产精品久久久久久影视| 亚洲美女在线观看| 精品久久久久久中文字幕一区奶水| 日本高清久久天堂| 日韩av在线电影网| 久久国产色av| 欧美激情极品视频| 在线电影欧美日韩一区二区私密| 日韩国产精品亚洲а∨天堂免| 日本精品久久中文字幕佐佐木| 欧美性生交xxxxx久久久| 欧美亚洲视频在线看网址| 91视频免费网站| 一二美女精品欧洲| 亚洲第一福利在线观看| 91免费精品国偷自产在线| 中文字幕在线亚洲| 欧美在线亚洲在线| 欧美性少妇18aaaa视频| 在线看日韩欧美| 亚洲国产精品va在线看黑人动漫| 亚洲精品资源美女情侣酒店| 久久99久国产精品黄毛片入口| 成人黄色av免费在线观看| 国产精品一区二区三区毛片淫片| 精品人伦一区二区三区蜜桃免费| 亚洲成人av片| 97色在线观看| 国产97免费视| 亚洲区中文字幕| 亚洲精品免费在线视频| 久久福利视频导航| 国产精品久久久久久久久| 久久亚洲国产精品| 欧美成人性色生活仑片| 中文字幕久久精品| 日本精品视频网站| 国产精品成人在线| 国产综合久久久久久| 日韩欧美在线一区| 97av视频在线| 欧美有码在线视频| 国模精品一区二区三区色天香| 国产深夜精品福利| 亚洲有声小说3d| 成人观看高清在线观看免费| 中文字幕精品影院| 日韩欧美在线观看视频| 欧美黄色小视频| 亚洲人在线视频| 超碰日本道色综合久久综合| 欧美一级淫片aaaaaaa视频| 狠狠综合久久av一区二区小说| 日本精品一区二区三区在线播放视频| 亚洲精品福利在线| 中文字幕精品—区二区| 亚洲自拍小视频免费观看| 国产精品女人久久久久久| 亚洲自拍小视频免费观看| 亚州精品天堂中文字幕| 国产日韩av在线播放| 久久精品成人一区二区三区| 欧美日韩999| 成人夜晚看av| 91九色视频导航| 日韩在线观看高清| 欧美日韩中文字幕综合视频| 成人国产精品久久久| 成人动漫网站在线观看| 欧美与欧洲交xxxx免费观看| 97人洗澡人人免费公开视频碰碰碰| 欧美综合国产精品久久丁香| 一本大道香蕉久在线播放29| 日韩免费中文字幕| 亚洲精品动漫100p| 日韩电影大片中文字幕| 国产一区二区久久精品| 久久久久久久国产精品| 久久久久久久久久久久久久久久久久av| 亚洲视频日韩精品| 日韩电影第一页| 欧美一区二三区| 8090理伦午夜在线电影| 日韩成人激情影院| 久久久女女女女999久久| 久久亚洲春色中文字幕| 久久免费国产视频| 久久久精品中文字幕| 日韩免费电影在线观看| 成人写真视频福利网| 国产成人91久久精品| 中文日韩在线观看| 亚洲精品国精品久久99热一| 国产精品一二三在线| 久久精品视频在线| 日韩黄色高清视频| 日韩精品在线私人| 亚洲欧美日韩网| 欧美性猛交xxxxx水多| 国产精品美女免费视频| 欧美激情第6页| 亚洲成人久久一区| 久久露脸国产精品| 国产成人一区二区三区| 久久影视电视剧免费网站| 按摩亚洲人久久| 2019中文字幕免费视频| 成人精品福利视频| 亚洲综合最新在线| 欧美成人精品一区二区三区| 国产日韩欧美一二三区| 国产成人自拍视频在线观看| 26uuu久久噜噜噜噜| 亚洲护士老师的毛茸茸最新章节| 国产成人精品一区二区| 日韩电影中文字幕在线观看| 精品成人国产在线观看男人呻吟| 欧美韩国理论所午夜片917电影| 精品视频久久久久久久| 色琪琪综合男人的天堂aⅴ视频|