1、Swing組件快速入門java
GUI的概念編程
①到目前爲止,咱們編寫的都是基於控制檯的程序;多線程
②GUI(Graphical User Interface)即圖形用戶界面,它可以使應用程序看上去更加友好;併發
③在企業中使用Java作GUI應用,相對較少;框架
Swing中的組件函數
①Swing中的大部分組件類位於javax.swing包中;佈局
②組件是JComponent的子類學習
③Swing中的組件很是豐富,支持不少功能強大的組件,如JTable、JTreespa
Swing組件的類體系結構線程
經常使用的基本Swing組件
①在Swing編程中,有一些常常要使用到的組件,其中包括;
1.JFrame(窗體,框架)
2.JPanel(面板,容器)
3.JButton(按鈕)
4.JLabel(標籤)
5.JTextField(文本框)
6.JTextArea(文本域)
javax.swing.JFrame
JFrame組件用於在Swing程序中建立窗體;
JFrame類的構造方法有4種重載方式,如下是經常使用的幾種;
JPanel的經常使用方法
JPanel(面板)的操做方式與Container(內容面板)很類似,如下是一些經常使用方法
Container類一般用於操做JFrame的內容面板,其經常使用的方法有
在Swing程序中,按鈕多是使用量最大的組件之一,JButton則是用來建立按鈕的
在Swing程序中,按鈕多是使用量最大的組件之一,JButton則是用來建立按鈕的
JTextField是文本框組件,主要用來接受用戶的輸入;
JTextField類的構造方法有5種重載方式,如下是經常使用的幾種
當用戶有大量文本須要輸入的時候,就可使用到文本域組件,JTextArea的構造方法共有6種重載,如下是經常使用的幾種
總結:
分析GUI中須要使用的組件
將GUI分紅幾個部分,每一個部分使用JPanel佈局。每一個JPanel能夠根據狀況使用不一樣的佈局管理器
將多個JPanel佈局到一個JFrame上
GUI事件監聽器:
解釋Java中的事件受權處理模型
瞭解java.awt.event包
瞭解Java中經常使用的事件類型
在Swing編程中實現事件處理
事件處理:
對於採用了圖形用戶界面的程序來講,事件控制是很是重要的;
到目前爲止,咱們編寫的圖形用戶界面程序都僅僅只是完成了界面,而沒有任何實際的功能,要實現相應的功能,必須進行事件處理;
用戶與GUI組件進行交互就會發生事件,如:按下一個按鈕、用鍵盤輸入一個字符、點擊鼠標等等;
當前咱們要關注的並非「事件是如何產生的」,而是討論當發生事件後,咱們應當「如何處理之」
事件處理模型:
Java中,事件處理的基本思路以下:
一個源(事件源)產生一個事件(事件對象)並把它送到監聽器那裏,監聽器只是簡單地等待,直到它收到一個事件,一旦事件被接受,監聽器將處理這些事件;
一個事件源必須註冊監聽器以便監聽器能夠接受關於一個特定事件的通知
事件源與事件:
當在一個圖形用戶界面點擊鼠標或者按下鍵盤時,都是針對於具體組件而發生的動做,如:使用鼠標點擊某個按鈕;按下鍵盤向文本框輸入內容等等;
咱們把動做所操縱的對象稱爲事件源,請注意:事件源必定是指某個組件;
當針對於事件源發生動做時,就會產生一個事件
監聽器與監聽器接口:
針對每一類型的事件,都有與之相對應的監聽器,用於監聽事件的發生;
在Java中,監聽器由一系列接口來提供;
實際上,事件監聽器就是實現了事件監聽接口的類,監聽器不斷監聽事件源的動做,當事件源產生一個事件後,監聽器接收到事件源的通知,就調用特定的方法,以執行指定的動做。
特定的事件監聽器只對特定的事件感興趣;
事件對象:
Java中的全部事件都被封裝在事件對象中,全部事件對象皆派生自EventObject類;
對於不一樣的事件類型會有不一樣的事件對象,它們都以相似於XxxEvent的方式命名,如:ActionEvent、MouseEvent等等;
事件對象中包含有事件發生時的相關信息(即事件觸發時產生的一些數據),會被事件底層機制傳遞到事件處理函數中;
實際上事件對象就是事件處理函數中被傳遞進來的參數,若是在處理事件的過程當中須要使用到相關的某些數據,能夠從事件對象中獲取;
總結:
與事件處理相關的三個概念:事件源、監聽器、事件對象;
在程序中要進行事件處理的話,須要導入java.awt.event包;
事件處理的三個步驟:
--肯定事件源和監聽器類型
--實現監聽器接口
--將事件源註冊到監聽器
事件處理的三種語法實現形式:
--內部類的實現方式
--匿名類的實現方式
--直接實現的方式
內部類:
內部類是Java獨有的一種語法結構,即在一個類的內部定義另外一個類,如:
public class ExteriorClass {
private class InteriorClass { }}
此時,內部類InteriorClass就成爲外部類ExteriorClass中的成員,訪問權限遵循類成員的訪問權限機制,能夠是public、protected、缺省和private;
內部類能夠很方便地訪問外部類中的其它成員;
內部類主要爲了解決類成員間相互訪問的問題
匿名內部類:
匿名類其實就是一種比較特殊的內部類,只是這個類沒有名字而已;
匿名類與內部類類似,可以訪問到外部類中的全部成員;
不少狀況下(特別是在事件處理中),匿名類通常被定義在外部類的某個方法中,因此也被稱爲局部內部類,對於局部內部類,它還能夠訪問到這個方法的參數;
在適當的狀況下,使用匿名類來實現事件處理,會使代碼更簡潔,更靈活。
只能使用一次;
GUI中的併發任務:
在GUI中,經常可能須要處理併發任務,例如,聊天室應該能夠支持傳遞文件的功能,而傳遞文件的同時能夠繼續聊天
修改 清空聊天記錄 事件處理,使其死循環,模擬須要很長時間,可見清理過程當中,不能作其餘操做
使用多線程編程,將解決該問題,後續學習