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.
Buen trabajo
ResponderEliminar