1、什麼是事件 java
事件是用戶與GUI(圖形界面)交互的時候所觸發的事情。 編程
監聽器是可以檢測事件而且可以響應事件的代碼。 框架
建立一個監聽器類,在GUI類內聲明這個類的實例,而且把監聽器對象和須要響應事件的GUI中的某個組件相關聯。這個過程稱之爲註冊(registering)監聽器。 函數
2、ActionListenerActionListener 是一個接口(interface),每一個swing對象都支持這個監聽器接口,ActionListener中只定義了一個方法,actionPerformed(ActionEvent e).咱們須要在監聽器類中來具體實現這個方法。e.getActionCommand()方法返回出發這個事件的對象相關的文本。 工具
經過判斷e.getActionCommand()來判斷用戶和哪一個組件進行了交互,而且執行相應的動做。 ui
在GUI類中,new一個監聽器類,而且經過調用組件的addActionListener方法,把這個監聽器類註冊到相應的組件紙上。 this
3、this 爲了在監聽器中實現對組件的一些改變和動做,在GUI類中實例化監聽器類的時候,傳遞給構造函數的變量是this,this表明一個對象對自身的引用,指的是一個對象的當前實例。而後監聽器類在構造函數中接受這個參數,以實現對GUI類中組件的一些改變。 spa
4、使用WindowAdapter類關閉框架 orm
關閉框架的時候能夠去實現WindowListener這個接口,不過這個接口中咱們不使用的方法也必須用空白的方法來代替,因此咱們能夠使用一種叫作適配器的類,這樣就能夠只定義windowClosing 方法。 對象
========================================================
Swing 是目前Java中不可缺乏的窗口工具組,是用戶創建圖形化用戶界面(GUI)程序的強大工具。Java Swing組件自動產生各類事件來響應用戶行爲。
如當用戶點擊按鈕或選擇菜單項目時,Swing組件會產生一個ActionEvent。Swing組件會產生許多事件,如ActionEvents, ChangeEvents,ItemEvents等,來響應用戶的鼠標點擊行爲,列表框中值的改變,計時器的開始計時等行爲。在Java Swing編程中,經過註冊監聽器,咱們能夠監聽事件源產生的事件,從而在事件處理程序中處理咱們所須要處理的用戶行爲。
Java Swing中處理各組件事件的通常步驟是:
1.新建一個組件(如JButton)。
2.將該組件添加到相應的面板(如JPanel)。
3.註冊監聽器以監聽事件源產生的事件(如經過ActionListener來響應用戶點擊按鈕)。
4.定義處理事件的方法(如在ActionListener中的actionPerformed中定義相應方法)。
以上步驟咱們能夠用多種方法實現。
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Simple3 { private static JFrame frame; // 定義爲靜態變量以便main使用 private static JPanel myPanel; // 該面板用來放置按鈕組件 private JButton button1; // 這裏定義按鈕組件 private JButton button2; // 以便讓ActionListener使用 // 利用通常內部類來監聽每個事件源產生的事件如(button1, button2) private class Button1Handler implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(frame, "按鈕1 被點擊"); } } private class Button2Handler implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(frame, "按鈕2 被點擊"); } } public Simple3() // // 構造器, 創建圖形界面 { // 新建面板 myPanel = new JPanel(); // 新建按鈕 button1 = new JButton("按鈕1"); // 新建按鈕1 button2 = new JButton("按鈕2"); // 對每個組件註冊監聽內部類 button1.addActionListener(new Button1Handler()); button2.addActionListener(new Button2Handler()); myPanel.add(button1); // 添加按鈕到面板 myPanel.add(button2); } public static void main(String s[]) { Simple3 gui = new Simple3(); // 新建Simple3組件 frame = new JFrame("Simple3"); // 新建JFrame // 處理關閉事件的一般方法 frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().add(myPanel); frame.pack(); frame.setVisible(true); } } |