2012-05-08 14 views
7

我想通過使用Action對象將函數從我的GUI應用程序中的狀態中分離出來。我已經成功地使用它們來創建具有相同功能的菜單項和按鈕。AbstractAction作爲WindowListener

我的問題是這樣的:我想爲我的菜單中的「退出」項和框架的關閉按鈕具有相同的操作。

目前我已經能夠通過將以下的WindowListener的框架來解決它:

private class MainWindowListener extends WindowAdapter { 
    @Override 
    public void windowClosing(WindowEvent e) { 
     new ExitAction(model).actionPerformed(new ActionEvent(e.getSource(), e.getID(), "Exit")); 
    } 
} 

是不是有一個更簡單更直接的方式來做到這一點?

回答

6

轉發事件很方便,但您也可以使用dispatchEvent(),如here所示。

附錄:使用Action的更多示例如下所示。

+0

相關的方法是調用按鈕的'doClick()'方法,如[這裏](http://stackoverflow.com/a/5797965/230513)所示。 – trashgod

+0

這個東西對我來說是新東西,而且非常有趣:-) –

+0

所以,如果我正確地理解了它,使用dispatchEvent()與我正在做的相反:將代碼保存在WindowListener中而不是在動作,並讓動作在那裏發送一個事件,而不是讓windowListener把它的事件轉發給動作?有趣... – FinalArt2005

相關問題