最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java編程中應(yīng)用的GUI設(shè)計基礎(chǔ)

 更新時間:2015年10月07日 18:03:54   投稿:goldensun  
這篇文章主要介紹了Java編程中應(yīng)用的GUI設(shè)計基礎(chǔ),為一些Java開發(fā)CS類型應(yīng)用的基礎(chǔ)概念知識,需要的朋友可以參考下

早先程序使用最簡單的輸入輸出方式,用戶在鍵盤輸入數(shù)據(jù),程序?qū)⑿畔⑤敵鲈谄聊簧稀,F(xiàn)代程序要求使用圖形用戶界面(Graphical User Interface,GUI),界面中有菜單、按鈕等,用戶通過鼠標選擇菜單中的選項和點擊按鈕,命令程序功能模塊。本章學習如何用Java語言編寫GUI科學試驗,如何通過GUI實現(xiàn)輸入和輸出。
AWT和Swing

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

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

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

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

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

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

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

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

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

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

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

以程序響應(yīng)按鈕事件為例,程序要創(chuàng)建按鈕對象,把它添加到界面中,要為按鈕作監(jiān)視器注冊,程序要有響應(yīng)按鈕事件的方法。當“單擊按鈕”事件發(fā)生時,系統(tǒng)就調(diào)用已為這個按鈕注冊的事件處理方法,完成處理按鈕事件的工作。

2.實現(xiàn)事件處理的途征
java語言編寫事件處理程序主要有兩種方案:一個是程序重設(shè)handleEvent(Eventevt),采用這個方案的程序工作量稍大一些;另一個方案是程序?qū)崿F(xiàn)一些系統(tǒng)設(shè)定的接口。java按事件類型提供多種接口,作為監(jiān)視器對象的類需要實現(xiàn)相應(yīng)的接口,即實現(xiàn)響應(yīng)事件的方法。當事件發(fā)生時,系統(tǒng)內(nèi)設(shè)的handleEvent(Event evt)方法就自動調(diào)用監(jiān)視器的類實現(xiàn)的響應(yīng)事件的方法。

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

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

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

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

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

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

每個事件類型都有一個相應(yīng)的監(jiān)視器接口,表11-2列出了每個接口的方法。實現(xiàn)監(jiān)視器接口的類必須實現(xiàn)所有定義在接口中的方法。

相關(guān)文章

  • java啟動線程的3種方式對比分析

    java啟動線程的3種方式對比分析

    這篇文章主要為大家對比分析了java啟動線程的3種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java實現(xiàn)計算一個月有多少天和多少周

    Java實現(xiàn)計算一個月有多少天和多少周

    這篇文章主要介紹了Java實現(xiàn)計算一個月有多少天和多少周,本文直接給出實例代碼,需要的朋友可以參考下
    2015-06-06
  • SpringBoot多環(huán)境開發(fā)該如何配置

    SpringBoot多環(huán)境開發(fā)該如何配置

    這篇文章主要介紹了 SpringBoot多環(huán)境的開發(fā)配置詳情,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • SSH框架網(wǎng)上商城項目第5戰(zhàn)之商品類別級聯(lián)查詢和分頁功能

    SSH框架網(wǎng)上商城項目第5戰(zhàn)之商品類別級聯(lián)查詢和分頁功能

    SSH框架網(wǎng)上商城項目第5戰(zhàn)之商品類別級聯(lián)查詢和分頁功能,寫一下CategoryServiceImpl實現(xiàn)類,完成數(shù)據(jù)庫的級聯(lián)查詢,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 搭建MyBatis-Plus框架并進行數(shù)據(jù)庫增刪改查功能

    搭建MyBatis-Plus框架并進行數(shù)據(jù)庫增刪改查功能

    這篇文章主要介紹了搭建MyBatis-Plus框架并進行數(shù)據(jù)庫增刪改查,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 如何利用反射批量修改java類某一屬性的代碼詳解

    如何利用反射批量修改java類某一屬性的代碼詳解

    這篇文章主要介紹了如何利用反射批量修改java類某一屬性,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java源碼解析CopyOnWriteArrayList的講解

    Java源碼解析CopyOnWriteArrayList的講解

    今天小編就為大家分享一篇關(guān)于Java源碼解析CopyOnWriteArrayList的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java如何實現(xiàn)定時任務(wù)

    Java如何實現(xiàn)定時任務(wù)

    這篇文章主要介紹了Java如何實現(xiàn)定時任務(wù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • SpringBoot中的Thymeleaf用法

    SpringBoot中的Thymeleaf用法

    Thymeleaf是最近SpringBoot推薦支持的模板框架。本文重點給大家介紹SpringBoot中的Thymeleaf用法,需要的的朋友參考下吧
    2017-05-05
  • Spring中常見的7種BeanDefinition詳解

    Spring中常見的7種BeanDefinition詳解

    在?Spring?容器中,我們廣泛使用的是一個一個的?Bean,BeanDefinition?從名字上就可以看出是關(guān)于?Bean?的定義,下面就跟隨小編一起深入了解一下常見的7中BeanDefinition吧
    2023-09-09

最新評論

色达县| 宁强县| 宁波市| 和田市| 城步| 莆田市| 彭阳县| 财经| 布尔津县| 建瓯市| 富阳市| 大足县| 衡阳县| 乌兰县| 宜宾市| 若尔盖县| 临汾市| 商城县| 毕节市| 兰坪| 淳安县| 巴彦县| 保德县| 礼泉县| 饶平县| 八宿县| 巫山县| 抚远县| 茂名市| 五峰| 绍兴县| 若尔盖县| 布尔津县| 深圳市| 白城市| 康平县| 类乌齐县| 卓尼县| 中江县| 垫江县| 祁东县|