4

在过去的两天里,我一直在尝试解决这个问题,但没有成功。我浏览了一页又一页的解决方案,这些解决方案看起来都正确,但要么我的实现是错误的,要么它们不是正确的解决方案。

我创建了一个名为 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 开发论坛一直没有帮助。

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

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

它隐藏了整个工具栏,但不隐藏其上的单个操作(图标)。

4

1 回答 1

3

Toolbar.getComponents()改为查看。

Component components = ToolbarPool.getDefault().
    findToolbar("AddEditDelete").getComponents();
for (Component component : components) {
    component.setEnabled(false);
}
于 2012-05-18T15:47:33.567 回答