過去2日間、これを解決しようとしてきましたが、うまくいきませんでした。すべてが正しいように見えるソリューションのページを何度も調べましたが、実装が間違っているか、正しいソリューションではありません。
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を無効にするための正しい(悪い習慣であっても)アプローチは何でしょうか-これまでのところ、ルックアップ、CookieSet、直接呼び出し、アクションのインスタンス化を使用してみました、そして私が手に入れた唯一のものは、私が望んでいたものでした
ToolbarPool.getDefault().findToolbar("AddEditDelete").setEnabled(false);
これにより、ツールバー全体が非表示になりますが、個々のアクション (アイコン) は非表示になりません。