Java NetBeans平台:工具栏和操作

Java NetBeans平台:工具栏和操作,java,swing,action,netbeans-7,jtoolbar,Java,Swing,Action,Netbeans 7,Jtoolbar,在过去的两天里,我一直在努力解决这个问题,但运气不佳。我浏览了一页又一页看起来都正确的解决方案,但要么我的实现是错误的,要么它们不是正确的解决方案 我创建了一个名为AddEditDelete的新工具栏。然后,我继续向其添加操作: 下面是AddAction.java @ActionID(category = "Edit", id = "com.waudware.toolbar.AddAction") @ActionRegistration(iconBase = "com/demo/toolbar/

在过去的两天里,我一直在努力解决这个问题,但运气不佳。我浏览了一页又一页看起来都正确的解决方案,但要么我的实现是错误的,要么它们不是正确的解决方案

我创建了一个名为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——它们都是“始终启用”的

我一直在尝试做的是:当您单击工具栏上的Add按钮时,它将执行AddAction.java中的代码并禁用EditAction.java(将操作按钮灰显,使其不可点击)

经过两天的努力,我完全不知所措,几乎可以肯定这是不可能的。到目前为止,NetBeans开发论坛没有任何帮助

编辑:我的问题非常具体和简单:从AddAction.java禁用EditAction.java的正确方法是什么(即使这是一种不好的做法)——到目前为止,我已经尝试过使用查找、CookieSet、直接调用、动作实例化,而我得到的唯一东西是我想要的

ToolbarPool.getDefault().findToolbar("AddEditDelete").setEnabled(false);
它隐藏整个工具栏,但不隐藏工具栏上的单个操作(图标)。

请参见


@AndrewThompson我的问题非常具体和简单:从AddAction.java禁用EditAction.java的正确方法是什么?到目前为止,我已经尝试过使用查找、CookieSet、直接调用、动作实例化,我得到的唯一东西是我远程想要的Toolbar.getDefault().findToolbar(“AddEditDelete”).setEnabled(false)-这隐藏了整个工具栏。!!我太接近了!我最后一次尝试是通过执行ToolbarPool.getDefault().findToolbar(“AddEditDelete”).list()打印出组件列表;-但我没有意识到我可以使用组件数组来禁用按钮。老实说,这可能是因为我从未想过AddAction和EditAction是组件。我一直认为它要么是一个操作(当我尝试将其放入操作数组时,它似乎不正确)。您的解决方案有效!我假设现在我可以根据组件的索引号引用组件并有选择地禁用它!
Component components = ToolbarPool.getDefault().
    findToolbar("AddEditDelete").getComponents();
for (Component component : components) {
    component.setEnabled(false);
}