使用Actions在Java中创建菜单,工具栏和其他组件的正确方法

Dav*_*lle 8 java user-interface swing

在Java Swing应用程序中编写菜单的简单方法是执行以下操作:

JMenu fileMenu = new JMenu("File");
JMenuItem openItem = new JMenuItem("Open...");
openItem.addActionListener(new ActionListener() { /* action listener stuff */ } )
fileMenu.addMenuItem(openItem);
Run Code Online (Sandbox Code Playgroud)

经验丰富的开发人员将认识到可以通过各种机制访问操作 - 菜单,工具栏按钮,甚至系统中的其他工作流程.那个人更有可能写:

Action openAction = new AbstractAction();
openAction.setName("Open...");
openAction.addActionListener(new ActionListener() { /* action listener stuff */ } )
...
JMenuItem openItem = new JMenuItem(openAction);
Run Code Online (Sandbox Code Playgroud)

我的问题是,管理这些Action对象的最佳方法什么,以便可以跨菜单,工具栏等使用它们?

  • 创建一个返回特定操作的工厂类?
  • private static final Action在某些实用程序类中声明所有操作?
  • 利用Java应用程序框架?
  • 别的什么?

Sha*_*wnD 4

我开发的应用程序需要在菜单、工具栏和其他按钮之间使用相同的操作,这些应用程序是使用 Swing 应用程序框架完成的。

Swing应用程序框架

该框架将允许您拥有一个资源文件,您可以在其中定义所有菜单文本、工具提示和图标。我认为图标是关键,你不必自己加载它们。此外,如果您需要启用/禁用任何操作,您可以重写该方法来控制其状态。

该网站值得一读。