Impostare filtri in JTable
Articolo riscritto
In questo articolo vediamo come impostare un filtro in una JTable, scrivendo dentro una JTextfield.
In pratica vogliamo ottenere quell'effetto per cui man mano che scriviamo, rimangono solo i dati che "assomigliano" a ciò che scriviamo.
Quello che ci serve è un TableRowSorter, impostato dopo l'inizializzazzione della nostra JTable.
Poi aggiungete una JTextField alla finestra, ed impostate un evento che intercetta quando scrivete.
In pratica una cosa del genere:
myTextField.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent evt) {
String search = myTextField.getText();
if (!search.isEmpty()) {
sorter.setRowFilter(RowFilter.regexFilter("(?i)" + search));
} else {
sorter.setRowFilter(null);
}
}
});
In questo modo abbiamo impostato una ricerca che non tiene conto delle maiuscole o minuscole.
Quindi queste ricerche produrranno gli stessi risultato:
- ciao
- CIAO
- Ciao
Se invece il campo di ricerca è vuoto, resettiamo il filtro, in modo da visualizzare tutte le righe.
Enjoy!
java jtable jtextfield tablerowsorter setrowfilter
5 Commenti
Ciao, molto interessante....volevo provare ad implementarlo, ma guardando l\'estratto del tuo codice...non riesco a capire come popolare le righe della tabella..
18/01/2014grazie per l'ottima segnalazione!!
07/07/2012Ho trovato la soluzione al filtro multiplo ed altre utilità sul filtraggio... :-) <br /><br />http://stackoverflow.com/questions/2494868/rowfilter-regexfilter-multiple-columns
06/07/2012Grazie Matteo di tutti i suggerimenti e spiegazioni che pubblichi!<br /><br />Una domanda... se volessi utilizzare un filtraggio multiplo (es. tutti i nomi (colonna0) che cominciano per 'MA' ed i cognomi (colonna1) che hanno 'PU') come dovrei impostare il problema?
06/07/2012Ciao ma il filtro funziona anche se vi sono dati da un Db? O solo su Arrey??
11/06/2012