Mam 12 filtrów dla 12 kolumn na JTable. Każdy filtr to TextField typu JTextField. Za każdym razem, gdy użytkownik wprowadza dane w filtrze pola tekstowego, następuje wyszukiwanie.Czy możliwe jest posiadanie jednego detektora dokumentów do wielu pól tekstowych w Swing?
Przykład: Załóżmy, że mam 3 kolumny i 3 pola tekstowe nad nimi jako filtry. Teraz coś, co jest wpisane w dowolnym polu tekstowym, moje filtrowanie tabeli musi się wydarzyć. To się dzieje świetnie.
╔═════════════╦═════════════╦═════════════╗
║ [TextField] ║ [TextField] ║ [TextField] ║
╠═════════════╬═════════════╬═════════════╣
║ ║ ║ ║
╠═════════════╬═════════════╬═════════════╣
... ... ...
╠═════════════╬═════════════╬═════════════╣
║ ║ ║ ║
╚═════════════╩═════════════╩═════════════╝
Tekst słuchacz pola dla każdego pola tekstowego wygląda tak,
textField.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) { method(); }
public void removeUpdate(DocumentEvent e) { method(); }
public void insertUpdate(DocumentEvent e) { method(); }
};
Moje pytanie brzmi, jestem powtarzając ten kod dla wszystkich 12 pól tekstowych, które nie byłem zadowolony. Czy to jedyny sposób, jaki mamy? czy ktoś może zaproponować mi lepszy sposób?
+1 .. brylantowy .. działało jak czar. Brak redundancji kodu teraz .. Wielkie dzięki .. :) – Amarnath
Nadal możesz zrobić to z anonimową klasą: 'DocumentListener listener = new DocumentListener() {...}; for (JTextField textfield: fields) {textField.getDocument(). addDocumentListener (listener); } ' –
@WalterLaan w prawo, Zapomniałem tej opcji – Robin