當你把介面都設計好了,總需要添加相應的執行動作給組件,在JAVA中有相應的時間處理機制,叫做“監聽器”,給組件添加相應執行動作的過程叫做“註冊”,其中的「監聽器」是一個接口,裡麵包含了相應的執行函數,要做的是自己實現其中的方法函數,然後「註冊」給組件,通俗一點的話就是老媽讓我去買醬油,老媽不關心我會轉過幾天街道,會怎樣和老闆到討價還價怎麼回家,老媽需要的最終結果是我能夠將醬油交付到她的手中,期中買醬油的過程是我實現的,我就是事件處理機制裡面的「監聽器」接受老媽的指示,老媽讓我買醬油去,就是對應將事件「註冊」給我,呵呵,又一次完美體現了JAVA中實現與接口分離。
JAVA中的元件事件有ActionEvent、KeyEvent、FocusEvent、ComponentEvent、MouseEvent、AdjustmentEvent等,每個元件支援其中的全部或一部分事件,相應的事件有相應的Listener來監聽事件的發生並且實作介面的方法,程序員要做的事情就是創建一個事件的類別對象,實現它裡面的函數,然後將它註冊給相應的元件,下面用程式碼示範:
複製代碼代碼如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ButtonDemo {
private JFrame
frame=new JFrame("ButtonDemo");
private JButton
b1 = new JButton("按鈕1"),
b2 = new JButton("按鈕2");
private JTextField
txt = new JTextField(10);
//這裡是使用一個匿名類別來實作對按鈕的監聽
private ActionListener bl = new ActionListener() {
//實作監聽類別中的抽象函數
public void actionPerformed(ActionEvent e) {
String name = ((JButton)e.getSource()).getText();
txt.setText(name);
}
};
public ButtonDemo () {
//將監聽物件註冊給兩個按鈕
b1.addActionListener(bl);
b2.addActionListener(bl);
frame.setLayout(new FlowLayout());
frame.add(b1);
frame.add(b2);
frame.add(txt);
frame.setVisible(true);
frame.setSize(200,150);
}
public static void main(String[] args) {
new ButtonDemo ();
}
}
監聽介面中如果有不只一個函數,而我只想實現其中的一個函數的時候,很顯示程式是不能運作的,因為你必須實作介面當中的所有函數的時候,才可以透過編譯,程式才可以跑起來,那應該怎們辦納?呵呵,顯然JAVA語言設計者已經考慮到了這一點,所以提供了一個叫做“適配器”的傢伙,它默認實現了接口當中的所有函數,繼承“適配器”這個類,並覆蓋你所該興趣的那個函數就可以了:
複製代碼代碼如下:
class MyMouseListener extends MouseAdapter{
public void mouseClicked(MouseEvent e){
//實作點擊滑鼠時的動作
}
}