Impostare filtri in JTable

Mattepuffo's logo
Impostare filtri in JTable

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!


Condividi

5 Commenti

  • Alessandro

    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/2014
  • fermat

    grazie per l'ottima segnalazione!!

    07/07/2012
  • Fabio

    Ho trovato la soluzione al filtro multiplo ed altre utilità sul filtraggio... :-) <br /><br />http://stackoverflow.com/questions/2494868/rowfilter-regexfilter-multiple-columns

    06/07/2012
  • Fabio

    Grazie 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/2012
  • Davide

    Ciao ma il filtro funziona anche se vi sono dati da un Db? O solo su Arrey??

    11/06/2012

Commentami!