Платформа NetBeans: определение действия в нескольких категориях - PullRequest
1 голос
/ 24 апреля 2019

Я разрабатываю приложение на платформе 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"
)
...
...

1 Ответ

0 голосов
/ 10 июля 2019

У меня есть много действий, которые будут доступны из более чем одного места (категории)

Если вы имеете в виду, что одно действие может быть вызвано из нескольких мест в пользовательском интерфейсе, например, к действию Edit можно получить доступ из пункта меню И кнопки панели инструментов, тогда вы должны использовать @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 просто определяют местоположение ссылки на действие в файле слоя .xml: «Действия / категория / идентификатор». Категория обычно используется для группировки действий, принадлежащих всплывающему меню, потому что Netbeans позволяет вам легко создать одно, используя Utilities.actionsForPath ("Actions / category), а затем Utilities.actionsToPopup () с возвращенными действиями.

...