0

I want to search customer name in SQL table through JTextField key released in NetBeans.

Here is my code of JTextField key released :

DefaultTableModel table = (DefaultTableModel)jTable1.getModel(); 
String search = jTextField1.getText(); 
TableRowSorter<DefaultTableModel> tr = new  TableRowSorter<DefaultTableModel>(table);

jTable1.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(search));

For example, If I want to find a customer name " RoNaldo " when I write starting word like that " ronaldo " then it's not working. Actually when writing the same word like that " RoNaldo " then it would be shown in the table. So, please provide me the right code for this.

3 Answers3

0

You have to use something like this,

DefaultTableModel table = (DefaultTableModel)jTable1.getModel();
TableRowSorter<DefaultTableModel> tr = new  TableRowSorter<DefaultTableModel>(table);

String search = jTextField1.getText().toLowerCase();
if (search.trim().length() == 0) {
      tr.setRowFilter(null);
   } else {
      tr.setRowFilter(RowFilter.regexFilter("(?i)" + search));
 }
0

Esto le ayudará: How can I perform a case-insensitive filter on a JTable?

Pero sin mas nada, la expresión regular que debe usar es "(?i)"+search :

tr.setRowFilter(RowFilter.regexFilter("(?i)" + search));
José Eras
  • 90
  • 4
0

Besides a case-insensitive search, also sorting on that column should be case-insensitive ideally.

final int nameColumn = 1;
tr.setComparator(nameColumn, (lhs, rhs) -> ((String)lhs).compareToIgnoreCase((String) rhs));

The above assumes the column to be 1, adapt it to the correct one.

Joop Eggen
  • 107,315
  • 7
  • 83
  • 138