我试图通过使用Action对象将功能与GUI应用程序中的状态分开。我已经成功地使用它们来创建具有相同功能的菜单项和按钮。

我的问题是:我希望菜单中的“退出”项和框架的关闭按钮都具有相同的操作。

目前,我已经可以通过将以下WindowListener添加到框架中来解决此问题:

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

有没有更简单,更直接的方法来做到这一点?

最佳答案

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

附录:下面显示了更多使用 Action 的示例。

  • LinePanel 连接按钮和键。
  • ScrollAction 利用现有的Swing操作。
  • KeyPadPanel 说明了转发操作。
  • GraphPanel 在工具栏中显示图形编辑器的操作。
  • 关于java - AbstractAction作为WindowListener,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10491400/

    10-14 10:42