Buscar en un JTable mientras se escribe | Java

Buscar en un JTable es bastante sencillo solo necesitamos la clase TableRowSorter, esto permitirá ir mostrando los resultados que contengan una palabra en específico, vamos a ver como implementar en un JTable que usa un DefaultTableModel.

private DefaultTableModel tableModel;
private TableRowSorter<TableModel> rowSorter;

public Constructor(){
    txtName = new JTextField();
    txtName.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent event) {
            searchTable(txtName.getText().trim().toUpperCase(), 1);
        }
    });
    topPanel.add(txtName)

    loadTableModel();

    table = new Table();
    table.setModel(tableModel);
    centerPanel.add(table)
}

private void loadTableModel() {
    tableModel = new DefaultTableModel() {
        private static final long serialVersionUID = 1L;

        @Override
        public boolean isCellEditable(int row, int column) {
            // TODO Auto-generated method stub
            return false;
        }
    };

    tableModel.addColumn(bundle.getString("idTableTitleColumn"));
    tableModel.addColumn(bundle.getString("codeTableTitleColumn"));
    tableModel.addColumn(bundle.getString("nameTableTitleColumn"));
    tableModel.addColumn(bundle.getString("descriptionTableTitleColumn"));
    tableModel.addColumn(bundle.getString("createDateTableTitleColumn"));
    tableModel.addColumn(bundle.getString("updateDateTableTitleColumn"));
    tableModel.addColumn(bundle.getString("statusTableTitleColumn"));

    rowSorter = new TableRowSorter<TableModel>(tableModel);
}

private void searchTable(String word, int column) {
    rowSorter.setRowFilter(RowFilter.regexFilter(word, column));
}
Como primer paso hemos creado la tabla y el campo de texto para buscar, después hemos creado un método que va a cargar el modelo de la tabla y además se ha sobrescrito el método de si la celda es editable para evitar que un usuario cambie el texto de una celda y también se ha seteado el modelo de la tabla al constructor de la clase TableRowSorter.

Como último paso se creo un método que recibe como parámetro la palabra a buscar y la columna en la que se encuentra.

Fíjate bien que dentro del JTextField se está llamando al soltar la tecla el método searchTable y simplemente nos irá filtrando la tabla a los datos que concuerden con la cadena de caracteres.

Comentarios

Publicar un comentario

Entradas populares