GUI:Graphical User Interface(圖形用戶介面) 用圖形的方式,用來顯示電腦操作的界面 Java為GUI提供的API都存在java.awt和javax.Swing兩個包中 java.awt 包: awt是這三個單詞首字母的縮寫,翻譯過來是抽象視窗工具包,只不過這個包的API ...
GUI:Graphical User Interface(圖形用戶介面) 用圖形的方式,用來顯示電腦操作的界面
Java為GUI提供的API都存在java.awt和javax.Swing兩個包中
-
java.awt 包:
awt是這三個單詞首字母的縮寫,翻譯過來是抽象視窗工具包,只不過這個包的API,需要調用本地系 統方法實現功能,和本地系統有關聯,不利於代碼移植,屬重量級控制項
-
javax.swing 包:
它是在awt的基礎上,建立的一套圖形界面系統,提供了更多的組件,而且完全由Java實現。增強了移 植性,屬輕量級控制項 所以,我們做圖形界面開發使用的是swing包下的類。
-
這裡出現了一個名詞:組件。
組件是具有圖形表示的對象,該圖形表示可以顯示在屏幕上並且可以與用戶交互 比如說,在用戶登錄中,文本框和按鈕等,都是能夠表示圖形的對象,所以它們都稱為組件。 最後,我們來說一下,我們會用到的常用組件
組件:
-
基本組件:具有圖形表示的對象
-
容器組件:是可以添加組件的組件。也就是在容器中可以通過add方法添加組件,既可以添加基本組件,也可 以添加容器組件。
-
JButton,這是按鈕
-
JLabel,這是用來顯示文本內容的,或者展示圖片使用
-
JTextFile,這是文本框,用來輸入內容的
-
JTextArea,這是文本域,用來輸入多行多列的數據的
接著,我們再來看容器組件:
面板也是一個容器,我們常用JPanel,後面用到在具體講解 窗體,下麵是Frame,這是awt包下,而我們使用的是JFrame,這是swing包下。 好了,GUI相關的基礎知識我們就先講到這裡
初識窗體
JFrame:窗體(頂層窗體)
JFrame(); ---> 構造一個不可見的窗體
JFrame類的構造方法
構造方法 | 功能說明 |
---|---|
public JFrame() | 創建一個沒有視窗標題的視窗框架 |
public JFrame(String title) | 創建一個視窗標題為title的視窗框架 |
JFrame成員方法
方法 | 功能說明 |
---|---|
public void setTitle(String title) | 設置或修改框架的標題 |
public String getTitle() | 返回框架的標題 |
public void setBackground(Color c) | 設置框架的背景顏色 |
public MenuBar getMenuBar() | 返回視窗中的菜單對象 |
public void setMenuBar(MenuBar mb) | 設置視窗的菜單條 |
public void remove(MenuComponent mc) | 從視窗刪除給定的菜單項 |
public boolean isResizable() | 判斷視窗是否可以調節大小 |
public void setVisible(boolean b) | 顯示或隱藏窗體(取決於b的值-true為顯示,-false為隱藏) |
public void setLocationRelativeTo(component c) | 設置窗體位置,null為屏幕中央 |
public void setAlawysOnTop(boolean c) | 設置此視窗是否終究位於其他視窗之上 |
public void setDefaultCloseoperation(int operation) | 設置窗體關閉時預設操作,3--為關閉時退出程式 |
窗體添加按鈕
JButton(); 構造方法
JButton(String text); | 創建一個帶文本的按鈕 |
---|---|
JButton() 成員方法
void setSize(int w, int h); | 設置按鈕的寬高大小 |
---|---|
void setLocation(int x, int y); | 設置按鈕的坐標 |
void setBounds(int x, int y, int w, int h); | 上面兩個方法的結合 |
和窗體相關操作
窗體對象.setLayout(null);------------> 取消窗體預設佈局
**
**
窗體對象.add(按鈕對象名) ------------------>把按鈕加入窗體中
JLabel();顯示文本或圖像類
構造方法:
JLabel(String text); | 創建指定的文本 |
---|---|
添加圖片時,不能直接加路徑,直接使用字元串路徑會識別成text文本
需要使用-----ImageIcon(String filename); 的構造方法
例子:
ImageIcon img = new ImageIcon("D\\img\\demo.png"); // 使用轉義符\定義完整路徑
JLabel jl = new JLabel(img); // 將圖片加入
成員方法:
與其按鈕的成員方法
void setBounds(int x, int y, int width, int height):設置位置和大小
JTextField(); 文本輸入框
構造方法
JTextField(String text); | 文本輸入框,有文本預設在輸入框里顯示 |
---|---|
JPassowrdFIeld();密碼輸入框
構造方法:
JPassowrdFIeld(String text); | 密碼輸入框,有文本預設在輸入框里顯示 |
---|---|
成員方法
void getText(); | 獲取輸入框文本內容 |
---|---|
監聽事件AcationEvent();
-
事件源:事件發生的地方。可以是按鈕,窗體,圖片等
-
事件:發生了什麼事情。例如:滑鼠點擊事件,鍵盤按下事件等 事件綁定:把事件綁定到事件源上,當發生了某個事件,則觸發對應的處理邏輯 事件源對象. addXXXListener(事件);
ActionEvent();構造方法----用於傳遞事件,為組件使用的addActionListener();方法接受此類事件的addActionListener()對象
要添加事件的對象名.addActionListener(new ActionListener() { // 這裡使用的為匿名類寫法
@override
public void cationPerformed(ActionEvent e){ // 重寫該方法,
事件觸發代碼
}
});
低級事件
低級事件是指基於組件和容器的事件,當一個組件上發生特定動作,則觸發了低級(組件)事件。
(1)ComponentEvent組件事件:組件尺寸變化、移動。
(2)ContainerEvent容器事件: 組件增加、移動。
(3)WindowEvent視窗事件: 包括用戶點擊了關閉按鈕,視窗得到與失去焦點,視窗最小化等。
(4)FocusEvent焦點事件: 焦點的獲得和丟失。
(5)KeyEvent鍵盤事件: 鍵按下、釋放。
(6)MouseEvent滑鼠事件: 包括滑鼠按下,滑鼠釋放,滑鼠點擊等。
這裡不一一列舉了
高級事件(語義事件)
高級事件可以不和特定的動作相關聯,該類事件具有一般性,取決於觸發此事件的含義。
(1)ActionEvent動作事件:對應一個動作事件,它不代表一個特定的動作,而是一種一般性動作(語義)。如按鈕按下、JTextField中按Enter鍵。
(2)AdjustmentEvent調節事件:在滾動條上移動滑塊以調節數值。
(3)ItemEvent項目事件:選擇項目,不選擇“項目改變”。
(4)TextEvent文本事件:文本對象改變。
常用事件處理類
常用組件事件類主要包括:
-
操作事件類ActionEvent
-
選項事件類ItemEvent
-
文本事件類TextEvent
-
視窗事件類WindowEvent
-
滑鼠事件類MouseEvent
-
按鍵事件類KeyEvent
事件處理類
事件源 | 產生事件的類類型 |
---|---|
Button | ActionEvent |
Checkbox | ActionEvent、ItemEvent |
Component | ComponentEvent、FocusEvent、KeyEvent、MouseEvent |
MenuItem | ActionEvent |
Scrollbar | AdjustmentEvent |
TextField | ActionEvent |
TextArea | ActionEvent |
Window | WindowEvent |
更多的部分可以參考java手冊