【问题标题】:NetBeans Platform: Define an action in multiple categoryNetBeans 平台:在多个类别中定义一个操作
【发布时间】:2019-04-24 08:32:53
【问题描述】:

我在 NetBeans 平台(8.1 版)上开发了一个应用程序。我将一个动作定义为以下示例:

@ActionID(
    category = "MyCategory",
    id = "my.action.id"
)
@ActionRegistration(
    displayName = "My Action", lazy = false
)
public final class MyAction extends AbstractAction implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e){
        // Do some works
    }
}

我想将此操作添加到多个类别。换句话说,我想从多个类别中访问此操作。是否可以不创建另一个类?例如这样的:

@ActionID(
    category = {"Category1", "Category2"},
    id = "my.action.id"
)
...
...

【问题讨论】:

  • 你为什么不想创建另一个类?您也可以在完成第一项工作后将操作路由到另一个方法
  • @Joe 仅出于可重用性考虑。我有许多可以从多个地方(类别)访问的操作。所以我想为每个动作创建一个类,以更好地处理和维护错误。

标签: java action netbeans-8 netbeans-platform


【解决方案1】:

我有许多动作可以从多个地方(类别)访问

如果您的意思是可以从 UI 中的多个位置调用一个操作,例如可以从菜单项和工具栏按钮访问编辑操作,然后您应该在操作中使用 @ActionReferences():

@ActionID(
     category = "MyCategory",
     id = "my.action.id"
)
@ActionRegistration(
    displayName = "Edit", 
    lazy = false)
@ActionReferences(
{
    @ActionReference(path="Toolbar/Edit", position=300),
    @ActionReference(path="Menu/Edit", position=500),
    @ActionReference(path="Shortcuts", name="C-F2"),
})

ActionId 类别和 id 只是在您的 .xml 层文件中定义操作引用的位置:“Actions/category/id”。该类别通常用于对属于弹出菜单的操作进行分组,因为 Netbeans 允许您使用 Utilities.actionsForPath("Actions/category) 然后使用 Utilities.actionsToPopup() 和返回的操作轻松构建一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多