2

Java Swing を使用して一度に有効または無効にする必要がある複数のテキスト フィールドがあります。それは可能ですか?

4

3 に答える 3

6

すべてJTextFieldsが単一のコンテナー上にある場合は、次のことができます。

for (Component c : container.getComponents()) {
   if (c instanceof JTextField) {
      c.setEnabled(false);
   }
}
于 2012-10-13T23:51:03.007 に答える
2

すべてのコンポーネントのグローバル リストを維持し、すべての参照を反復処理するのは困難です。システムの疎結合の性質を壊すことなく、すべてのテキスト フィールドを有効または無効にするように通知する必要があるとします (アプリケーションを保守可能に保つことに関心があると思います)。

私の提案は次のとおりです。

  1. サブクラス JTextField
  2. 結合を減らすために EventBus の使用を開始します (任意の実装から開始できます。これは十分に単純です) 。
  3. JTextField サブクラスでサブスクライブして、change_stateイベントを受信します
  4. 有効化/無効化をサポートしたい場合は、独自の JTextField を使用してください
  5. アプリケーションの任意の部分からchange_stateイベントを生成する

要求された機能に関連する場所は 2 つだけであることに注意してください。

  • イベントのトリガー (ボタン アクション リスナーにすることができます)
  • イベント処理 (JTextField サブクラス)

イベント処理ロジックをアプリケーションに分散させないでください。ハッピーコーディング。

于 2012-10-14T00:03:59.393 に答える
2

それらをすべてリンクされたリスト/配列リストに入れると、それをループして有効/無効にするメソッドを持つことができます。これはおそらく最も簡単な方法です

于 2012-10-13T23:35:07.457 に答える