4

過去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);

これにより、ツールバー全体が非表示になりますが、個々のアクション (アイコン) は非表示になりません。

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 に答える