当前位置: 首页 > 面试题库 >

AbstractAction作为WindowListener

隗锐进
2023-03-14
问题内容

我试图通过使用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(),如在这里。

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

  • LinePanel 连接按钮和按键。
  • ScrollAction 利用现有的Swing操作。
  • KeyPadPanel 该图说明了转发操作。
  • GraphPanel在工具栏中显示图形编辑器的操作。


 类似资料:
  • 通常需要根据其他GUI对象的状态更改其他GUI对象的行为。当一个按钮被按下时,一个标签将改变它的名称。但是,当我使用AbstractAction对象时,例如,我需要引用从AbstractAction继承的对象中的GUI对象。我应该在GUI中创建AbstractAction对象,然后将所有必要的GUI引用传递给AbstractAction对象吗? 为了让它更具体:

  • 问题内容: 当我尝试使用粘贴到单元格时,我要粘贴的单元格保持空白,但setValueAt()似乎可以正常工作。另外,当我尝试从一个单元格剪切或复制JPopupMenu时,如果要粘贴到另一个单元格,则我的“粘贴”选项将保持禁用状态。我不知道为什么。我的代码如下。 Here’s my code for 问题答案: 根据您的示例代码,并且必须填写空白,它对 我有用… Now, maybe you’d l

  • 我有一个流量endpoint,我提供给客户机(订户),以接收更新的价格。我正在测试它通过浏览器访问URL(http://localhost:8080/prices),它工作得很好。我面临的问题(我可能在这里遗漏了一些概念)是,当我在许多浏览器中打开这个URL,我希望在所有浏览器中都收到通知,但只有一个浏览器收到通知。它作为一个队列而不是一个主题工作(就像在message Brokers中一样)。那

  • 因此,我的任务是为客户端的Oracle Hyperion应用程序启用SSO。我使用的方法是基于自定义标头变量的SSO。 平联邦目前作为许多应用程序的SSO身份验证服务器存在,计划是在它(平馈SP)从Okta IDP检索属性/身份验证用户时使用它作为目标应用程序的SP。 我对这个过程相对较新,因为您可能已经猜到了,并且正在寻找有关如何配置的澄清: > SP 从 Pingfed 启动 SSO,并从 O

  • 问题内容: 我怎样才能得到 作为MySQL中的UTC / GMT?该日期在连接的时区中返回。 我不想更改连接的时区。 问题答案: 您最好提前设置时区: 原因是涉及本地时区的转换可能是有损的。这里的文档中有一个示例(请参阅以“注意:”开头的部分下的第4段)