首先,我是一個完整的Java NOOB。Java - 用一個函數處理多個事件?
我想處理多個按鈕與一個功能,並根據點擊按鈕做某些事情。我正在使用Netbeans,並且我添加了一個具有綁定功能的事件。該函數默認發送一個ActionEvent。
如何獲取被點擊的對象,以便從該函數內部觸發綁定函數,以便我知道要追求哪些功能?
首先,我是一個完整的Java NOOB。Java - 用一個函數處理多個事件?
我想處理多個按鈕與一個功能,並根據點擊按鈕做某些事情。我正在使用Netbeans,並且我添加了一個具有綁定功能的事件。該函數默認發送一個ActionEvent。
如何獲取被點擊的對象,以便從該函數內部觸發綁定函數,以便我知道要追求哪些功能?
發送事件的對象是事件源,因此evt.getSource()會幫你。但是,單獨處理單獨事件會更好。
調用ActionEvent的getSource()
方法。例如:
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
// 'source' now contains the object clicked on.
}
如果使用AWT事件,然後ActionEvent的支持,這將使您這理應生成事件的對象的getSource()方法。
話雖這麼說,有更好的設計,其中每個對象實例化它自己的事件處理程序
處理多個按鈕按下一個功能(方法)只有當所有的按鈕按下做正是同樣的事情。
即使在這種情況下,有一個私有方法,並從所有需要的地方調用此私有方法。
爲不同的按鈕編寫單獨的事件處理程序並不困難。在最簡單的情況下,寫匿名處理,具體如下:
aButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
myMethod();
}
});
在更復雜的情況下,寫一個擴展ActionListener
一個單獨的類,並使用該addActionListener()
調用內部的上方。
這並不難,易於維護和擴展,並且比單一的actionPerformed
更好。
(在NetBeans中,右鍵單擊按鈕,Events-> Action-> actionPerformed,代碼就會生成)