抽象动作作为窗口监听器

7
我正在尝试通过使用Action对象将功能与状态分离,来构建我的GUI应用程序。我已经成功地使用它们创建了具有相同功能的菜单项和按钮。
但是我的问题是:我想要在菜单中的“退出”选项和框架中的关闭按钮上使用相同的Action。
目前,我已经通过向框架添加以下WindowListener来解决了这个问题:
private class MainWindowListener extends WindowAdapter {
    @Override
    public void windowClosing(WindowEvent e) {
        new ExitAction(model).actionPerformed(new ActionEvent(e.getSource(), e.getID(), "Exit"));
    }
}

有没有更简单、更直接的方式来完成这个任务呢?

1个回答

6
转发事件非常方便,但您也可以使用 dispatchEvent(),如此处所示。
补充说明:下面显示了更多使用Action的示例。

一种相关的方法是调用按钮的 doClick() 方法,如此处所示。 - trashgod
这个东西对我来说是新鲜事物,而且非常有趣 :-) - nIcE cOw
所以,如果我理解正确的话,使用dispatchEvent()有点相反于我正在做的事情:将代码保留在WindowListener中而不是在操作中,并使操作将事件发送到那里,而不是使windowListener将其事件转发给操作?有趣... - Erik Stens
我能看到对称性;更多在上方。 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接