Pages

Java JTable Search Filter

package classess;

import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

/**
 *
 * @author Cy.Co.Labs
 */
public class TableSortFilter {

    ////////////////////////////////////////////////
    private static TableSortFilter tsf;

    private TableSortFilter() {
    }

    public static TableSortFilter getTableSortFilter() {
        System.gc();
        if (tsf == null) {
            tsf = new TableSortFilter();
        }
        return tsf;
    }
    ////////////////////////////////////////////////

    private TableRowSorter<TableModel> rowSorter;

    public void setfilter(JTable tbl, JTextField tf) {
        rowSorter = new TableRowSorter<>(tbl.getModel());
        tbl.setRowSorter(rowSorter);

        tf.getDocument().addDocumentListener(new DocumentListener() {

            @Override
            public void insertUpdate(DocumentEvent e) {
                String text = tf.getText();

                if (text.trim().length() == 0) {
                    rowSorter.setRowFilter(null);
                } else {
                    rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
                }
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                String text = tf.getText();

                if (text.trim().length() == 0) {
                    rowSorter.setRowFilter(null);
                } else {
                    rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
                }
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }
        });
    }
}

To Use:

TableSortFilter.getTableSortFilter().setfilter(tblTableName, txtSerachTextField);

No comments:

Post a Comment