Я пытался решить эту проблему в течение последних 2 дней, но безуспешно. Я просмотрел страницы за страницами решений, которые все выглядят правильными, но либо моя реализация неверна, либо они не являются правильными решениями.
Я создал новую панель инструментов под названием AddEditDelete. Затем я добавил к нему действия:
Вот AddAction.java
@ActionID(category = "Edit",
id = "com.waudware.toolbar.AddAction")
@ActionRegistration(iconBase = "com/demo/toolbar/icons/add.png",
displayName = "#CTL_AddAction")
@ActionReferences({
@ActionReference(path = "Toolbars/AddEditDelete", position = 1),
@ActionReference(path = "Shortcuts", name = "D-A")
})
@Messages("CTL_AddAction=Add")
public final class AddAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
//TODO: Code here
}
}
У меня также есть EditAction.java и DeleteAction.java — все они были созданы как «Всегда включенные».
Я пытался сделать следующее: когда вы нажимаете кнопку «Добавить» на панели инструментов, он выполняет код в AddAction.java И отключает EditAction.java (кнопки действий выделены серым цветом, поэтому они недоступны).
После 2 дней попыток понять, как это сделать, я полностью потерялся и почти уверен, что это невозможно. Форумы разработчиков NetBeans до сих пор были бесполезны.
Редактировать: Мой вопрос довольно конкретен и прост: каков будет правильный (даже если это плохая практика) подход к отключению EditAction.java из AddAction.java. До сих пор я пытался использовать Lookup, CookieSet, прямые вызовы, создание экземпляра действия, и единственное, что я получил удаленно, это то, что я хотел, это
ToolbarPool.getDefault().findToolbar("AddEditDelete").setEnabled(false);
который скрывает всю панель инструментов, а не отдельные действия (значки) на ней.