1. 程式人生 > >Java語言中的GUI總結

Java語言中的GUI總結

線程 jframe cte 其中 死循環 友好 監聽 事件處理模型 比較

一、GUI

  1、GUI的概念

    GUI(Graphical User Interface)即圖形用戶界面,它能夠使應用程序看上去更加友好。

  2、AWT、Swing以及SWT

    AWT(Abstract Windows Toolkit)是Java語言中最原始的GUI工具包,相關API位於java.awt包中。AWT是一個非常有限的GUI工具包,比如樹、表格等都不支持;

    然而AWT卻無法實現。AWT運行時,每個組件都要依賴於當前平臺的GUI對等體(peer)控件,因此,AWT GUI 的外觀和行為就會依賴當前平臺。

  3、java.awt包

    java.awt包是Java內置的包,屬於Java基礎類庫(JFC)的一部分,其中包括以下內容;

    便於用戶輸入的一組豐富的界面組件;

    將組件放置在適當位置的幾種布局管理器;

    事件處理模型;

    圖形和圖像工具等等。

  4、常用的基本Swing組件

    在Swing編程中,有一些經常要使用到的組件,其中包括:

    JFrame(窗體,框架)、JPanel(面板,容器)、JButton(按鈕)、JLabel(標簽)、JTextField(文本框)、JTextArea(文本域)。

  5、創建GUI的步驟總結

    分析GUI中需要使用的組件;

    將GUI分成幾個部分,每個部分使用JPanel布局。每個JPanel可以根據情況使用不同的布局管理器;

    將多個JPanel布局到一個JFrame上。

二、Swing事件監聽快速入門

  1、事件處理

    對於采用了圖形用戶界面的程序來說,事件控制是非常重要的;

    到目前為止,我們編寫的圖形用戶界面程序都僅僅只是完成了界面,而沒有任何實際的功能,要實現相應的功能,必須進行事件處理;

    用戶與GUI組件進行交互就會發生事件,如:按下一個按鈕、用鍵盤輸入一個字符、點擊鼠標等等;

    當前我們要關註的並不是“事件是如何產生的”,而是討論當發生事件後,我們應當“如何處理之”。

  2、事件處理模型

    Java中,事件處理的基本思路如下:

    一個源(事件源)產生一個事件(事件對象)並把它送到監聽器那裏,監聽器只是簡單地等待,直到它收到一個事件,一旦事件被接受,監聽器將處理這些事件;

    一個事件源必須註冊監聽器以便監聽器可以接受關於一個特定事件的通知。

  3、事件源與事件

    當在一個圖形用戶界面點擊鼠標或者按下鍵盤時,都是針對於具體組件而發生的動作,如:使用鼠標點擊某個按鈕;按下鍵盤向文本框輸入內容等等;

    我們把動作所操縱的對象稱為事件源,請註意:事件源一定是指某個組件;

    當針對於事件源發生動作時,就會產生一個事件。

  4、監聽器與監聽器接口

    針對每一類型的事件,都有與之相對應的監聽器,用於監聽事件的發生;

    在Java中,監聽器由一系列接口來提供;

    實際上,事件監聽器就是實現了事件監聽接口的類,監聽器不斷監聽事件源的動作,當事件源產生一個事件後,監聽器接收到事件源的通知,就調用特定的方法,以執行指定的動作;

    特定的事件監聽器只對特定的事件感興趣。

  5、事件類型

    實際上,事件是區分類型的,如:操作鼠標時會產生鼠標事件,使用鍵盤輸入字符時會產生鍵盤事件,窗體打開或關閉時會產生窗體事件等等;

    對於不同類型的事件會有不同類型的監聽器與之對應;

    java.awt.event包中包含了一系列監聽器接口,分別用來處理不同類型的事件。

  6、事件對象

    Java中的所有事件都被封裝在事件對象中,所有事件對象皆派生自EventObject類;

    對於不同的事件類型會有不同的事件對象,它們都以類似於XxxEvent的方式命名,如:ActionEvent、MouseEvent等等;

    事件對象中包含有事件發生時的相關信息(即事件觸發時產生的一些數據),會被事件底層機制傳遞到事件處理函數中;

    實際上事件對象就是事件處理函數中被傳遞進來的參數,如果在處理事件的過程中需要使用到相關的某些數據,可以從事件對象中獲取。

三、內部類

  1、定義.

    內部類是Java獨有的一種語法結構,即在一個類的內部定義另一個類,如:

    public class ExteriorClass {

       private class InteriorClass {   

      }

     }

    此時,內部類InteriorClass就成為外部類ExteriorClass中的成員,訪問權限遵循類成員的訪問權限機制,可以是public、protected、缺省和private;

    內部類可以很方便地訪問外部類中的其它成員;

    內部類主要為了解決類成員間相互訪問的問題。

四、匿名內部類

  匿名類其實就是一種比較特殊的內部類,只是這個類沒有名字而已;

  匿名類與內部類相似,能夠訪問到外部類中的所有成員;

  很多情況下(特別是在事件處理中),匿名類一般被定義在外部類的某個方法中,所以也被稱為局部內部類,對於局部內部類,它還可以訪問到這個方法的參數;

  在適當的情況下,使用匿名類來實現事件處理,會使代碼更簡潔,更靈活;

  只能使用一次。

五、GUI中的並發任務

  在GUI中,常常可能需要處理並發任務,例如,聊天室應該可以支持傳遞文件的功能,而傳遞文件的同時可以繼續聊天;

  修改 清空聊天記錄 事件處理,使其死循環,模擬需要很長時間,可見清理過程中,不能做其他操作;

  使用多線程編程,將解決該問題,後續學習。

Java語言中的GUI總結