5

JTableの12列に12個のフィルターがあります。各フィルターは、タイプJTextFieldのTextFieldです。ユーザーがテキストボックスフィルターにデータを入力するたびに、検索が行われます。

例: たとえば、フィルターとして3つの列とその上に3つのテキストボックスがあるとします。これで、テーブルフィルタリングのテキストボックスのいずれかに入力されたことが発生する必要があります。それは素晴らしいことです。

╔═════════════╦═════════════╦═════════════╗
║ [TextField] ║ [TextField] ║ [TextField] ║
╠═════════════╬═════════════╬═════════════╣
║             ║             ║             ║
╠═════════════╬═════════════╬═════════════╣
      ...           ...           ...
╠═════════════╬═════════════╬═════════════╣
║             ║             ║             ║
╚═════════════╩═════════════╩═════════════╝

各テキストフィールドのテキストフィールドリスナーは次のようになります。

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) { method(); } 
  public void removeUpdate(DocumentEvent e) { method(); }
  public void insertUpdate(DocumentEvent e) { method(); } 
};

私の質問は、12のテキストフィールドすべてに対してこのコードを繰り返していることですが、これは本当に満足のいくものではありませんでした。これが私たちの唯一の方法ですか?または誰かが私にもっと良い方法を提案できますか?

4

1 に答える 1

8
  • 匿名クラスから内部クラスに切り替えて、各フィールドに同じリスナーをアタッチします。ソースはイベントに含まれています
  • それを個別のクラスにし、フィールドごとに個別のリスナーを使用し続けます。少なくともコードの重複を回避します

内部クラスの例については、このチュートリアルを参照してください

于 2012-10-16T08:33:52.617 に答える