1

ボタンとメニューがたくさんあるアプリを実行していますが、ボタンとメニュー項目に関連付けられたアクションを実行できる場合と実行できない場合に、ボタンとメニュー項目を有効または無効にしたいと考えています。つまり、保存ボタンと保存メニュー項目は、保存されていない変更がある場合にのみアクティブになります。

質問: これを効率的に行うにはどうすればよいですか?/これを行う正しい方法はどれですか?

1 つの解決策は、ボタンとメニュー エントリごとにプライベート変数を持ち、必要に応じて有効/無効にすることです。他の解決策は、配列内の JToolBar と JMenu のすべてのコンポーネントを取得し、それらすべてを反復処理して、必要に応じて有効/無効にすることです。しかし、もっと良い解決策があると思います。ヘルプやガイドラインは高く評価されます。

編集:問題は、単一のボタンまたはメニュー項目を有効/無効にする方法ではありません。アプリのすべてのボタンとメニュー項目の状態を管理する方法がわかります。これを達成するための最良の方法はどれですか?. 私が考えてきたいくつかの解決策を説明しましたが、どれも私を納得させません。

4

2 に答える 2

4

Actionクラスはすでにこれをサポートしています。Action#isEnabledおよびAction#setEnabledメソッドを参照してください。セッターを呼び出すとイベントが発生し、これActionが設定されている UI 自体が有効/無効になります。

Action、UI ボタン​​/メニュー項目/... のモデルと見なすことができます。すべての状態はモデルに保存および更新され、ビューはこれを反映する必要があります (MVC パターン)。

于 2013-02-05T16:52:16.773 に答える
1

1) 使用のクリックを無効にするには:

JButton#setEnabled(boolean)

JMenuItem#setEnabled(boolean)

ActionListener2)しばらくの間無効にするには、内部でプライベートブール変数を使用します

public void actionPerformed (ActionEvent ae) {
    if (!enabled) return;

    // rest of code
}
于 2013-02-05T16:53:01.837 に答える