Java 基礎【02】Swing 組件事件監聽


   當你把界面都設計好了,總需要添加相應的執行動作給組件。

   在 JAVA 中有相應的時間處理機制,叫做“監聽器”,給組件添加相應執行動作的過程叫做“注冊”。

   其中的“監聽器”是一個接口,里面包含了相應的執行函數,要做的是自己實現其中的方法函數,然后“注冊”給組件。

   通俗一點的話就是老媽讓我去買醬油,老媽不關心我會轉過幾天街道,會怎樣和老板到討價還價怎樣回家,老媽需要的最終結果是我把醬油帶回家。

   期中買醬油的過程是我實現的,我就是事件處理機制里面的“監聽器”接受老媽的指示,老媽讓我買醬油去,就是對應將事件“注冊”給我,又一次完美體現了JAVA中實現與接口分離。

   JAVA 中的組件事件有 ActionEvent、KeyEvent、FocusEvent、ComponentEvent、MouseEvent、AdjustmentEvent等。

   每個組件支持其中的全部或者是一部分事件,相應的事件有相應的 Listener 來監聽事件的發生並且實現接口的方法。

   程序員要做的事情就是創建一個事件的類對象,實現它里面的函數,然后將它注冊給相應的組件。

 1 import javax.swing.*;
 2 import java.awt.*;
 3 import java.awt.event.*;
 4 
 5 public class ButtonDemo  {
 6     private JFrame 
 7     frame=new JFrame("ButtonDemo");
 8     private JButton
 9     b1 = new JButton("按鈕1"),
10     b2 = new JButton("按鈕2");
11     private JTextField 
12     txt = new JTextField(10);
13     //這里是使用一個匿名類來實現對按鈕的監聽
14   private ActionListener bl = new ActionListener() {
15       //實現監聽類中的抽象函數
16     public void actionPerformed(ActionEvent e) {
17       String name = ((JButton)e.getSource()).getText();
18       txt.setText(name);
19     }
20   };
21   public ButtonDemo () {
22       //將監聽對象注冊給兩個按鈕
23     b1.addActionListener(bl); 
24     b2.addActionListener(bl);
25     frame.setLayout(new FlowLayout());
26     frame.add(b1);
27     frame.add(b2);
28     frame.add(txt);
29     frame.setVisible(true);
30     frame.setSize(200,150);
31     
32   }
33   public static void main(String[] args) {
34    new ButtonDemo ();
35   }
36 } 

   監聽接口中如果有不止一個函數,而我只想實現其中的一個函數的時候,很顯示程序是不能運行的。

   因為你必須實現接口當中的所有函數的時候,才可以通過編譯,程序才可以跑起來,那應該怎們辦納?

   顯然 JAVA 語言設計者已經考慮到了這一點,所以提供了一個叫做“適配器”的家伙,它默認實現了接口當中的所有函數,繼承“適配器”這個類,並覆蓋你所該興趣的那個函數就可以。

1 class MyMouseListener extends MouseAdapter{
2     public void mouseClicked(MouseEvent e){
3         //實現當點擊鼠標時的動作
4     }
5 } 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM