过去两天我一直试图解决这个问题而没有运气。我浏览了所有看起来都正确的解决方案页面,但要么我的实现错了,要么他们不是正确的解决方案。
我创建了一个名为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(灰色操作按钮,使它们无法点击)
在试图弄清楚如何做到这两天后,我完全迷失了,几乎可以肯定它是不可能的。到目前为止,NetBeans开发论坛一直没有用。
编辑:我的问题非常具体和简单:从AddAction.java禁用EditAction.java的正确方法(即使这是一种不好的做法) - 到目前为止,我已经尝试过了使用Lookup,CookieSet,直接调用,Action实例化,我唯一得到的就是远程我想要的是
ToolbarPool.getDefault().findToolbar("AddEditDelete").setEnabled(false);
隐藏整个工具栏,但不隐藏单个操作(图标)。
答案 0 :(得分:3)
Component components = ToolbarPool.getDefault().
findToolbar("AddEditDelete").getComponents();
for (Component component : components) {
component.setEnabled(false);
}