在过去的两天里,我一直在尝试解决这个问题,但没有成功。我浏览了一页又一页的解决方案,这些解决方案看起来都正确,但要么我的实现是错误的,要么它们不是正确的解决方案。
我创建了一个名为 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);
它隐藏了整个工具栏,但不隐藏其上的单个操作(图标)。