Java學習筆記(二)事件監聽器

    Java實現對組件事件(如單擊、輸入等)的監聽和JavaScript類似,都是先添加Listener,再寫觸發函數,不同的是,Java實現監聽前必須使用implements將各個接口添加到類內。

    相關的庫爲java.awt.event.*

    例如要添加行爲事件的接口ActionListener,則需要在實現窗口的類內作如下操作:

public class Test extends JFrame implements ActionListener{
    public Test(){
        //...
    }
    
    public void actionPerformed(ActionEvent event){
        //...
    }    
}

    注意只要添加了ActionListener接口,並且Test不是抽象類,則必須加入相應的觸發函數,這裏加入的爲actionPerfomed。

    以處理按鍵單擊爲例,具體步驟如下:

    ①添加ActionListener接口

    ②在相應的類內寫觸發函數actionPerformed(ActionEvent event)

    ③對按鈕(設爲button1)添加監聽器:button1.addActionListener(this)

    ④將按鈕加入容器

    ⑤在觸發函數內,判斷觸發對象,有兩種方法

      第一種,使用event的getSource()方法,獲取的是對象,可以使用==表達式直接判斷對象,例如

    Object source = event.getSource();
    if(source == button1){
        //...
    }

      第二種,事先在添加監聽器前設定行爲命令,例如先對button1添加動作命令"trig1"

    button1.setActionCommand("trig1");

      在觸發函數內,使用getActionCommand()方法來獲取行爲命令:

    if(event.getActionCommand() == "trig1"){
        //...
    }

      第二種用法多用在一些多個組件觸發相同的動作時,例如退出程序功能,可能同時存在於菜單和工具欄,他們可以使用同樣的命令,來簡化代碼。


      對於其他的監聽,與此類似,不再贅述,需要注意的是,一定要先添加組件的各種屬性,再將其放入容器,否則設置會被忽略。

      對於窗口的監聽,有大量的方法,如果像上面那樣使用,則會產生很多空方法,爲了避免這一點,可以採用適配器類來監聽。可以在原來的類的下面再創建一個類,繼承響應的適配器。

      例如下面的鍵盤監聽,添加一個類繼承KeyAdapter來實現監聽,對於需要的觸發函數,覆蓋即可

class KeyMonitor extends KeyAdapter{
    public void keyTyped(KeyEvent event){
        //...
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章