2012-05-18 1 views
4

Я пытался решить это в течение последних 2 дней без везения. Я просматривал страницы на страницах решений, которые выглядят правильно, но либо моя реализация неверна, либо они не являются правильными решениями.Платформа NetBeans: панель инструментов и действия

Я создал новую панель инструментов с именем 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 dev были бесполезны.

Edit: Мой вопрос достаточно специфичен и просто: Что было бы правильным (даже если это плохая практика) подход к отключению EditAction.java от AddAction.java -Так далеко я попытался с помощью поиска, CookieSet , прямые вызовы, Действие конкретизации, и единственное, что я получил, что было удаленно, что я хотел это

ToolbarPool.getDefault().findToolbar("AddEditDelete").setEnabled(false); 

, который скрывает всю панель, а не отдельные действия (иконки) на нем.

+0

@AndrewThompson Мой вопрос достаточно специфичен и просто: Что бы правильный подход к отключению EditAction.java от AddAction.java -Так далеко я попытался с помощью поиска, CookieSet, прямые вызовы, инстанцирование действий, и Единственное, что у меня получилось, это то, что я хотел, это ToolbarPool.getDefault(). findToolbar («AddEditDelete»). setEnabled (false) - который скрывает всю панель инструментов. –

ответ

3

См. Toolbar.getComponents().

Component components = ToolbarPool.getDefault(). 
    findToolbar("AddEditDelete").getComponents(); 
for (Component component : components) { 
    component.setEnabled(false); 
} 
+0

!! Я был так близок! Моя последняя попытка я попытался распечатать список компонентов, выполнив ToolbarPool.getDefault(). findToolbar ("AddEditDelete") список(). - но я не понимал, что могу использовать компонентный массив для отключения кнопок. Честно говоря, это, вероятно, потому, что я никогда не думал об AddAction, EditAction как о компонентах. Я продолжал думать, что это либо действие (которое не показалось правильным, когда я попытался поместить его в массив Action). Ваше решение работает! Я предполагаю, что теперь я могу просто ссылаться на компоненты по их номеру индекса и выборочно отключать! –