當你把界面都設計好了,總需要添加相應的執行動作給組件,在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){
//實現當點擊鼠標時的動作
}
}