通过使用大写或小写释放的JTEXTFIELD密钥在SQL表中搜索



我想通过Netbeans发布的JTEXTFIELD键在SQL表中搜索客户名称。

这是我发布的jtextfield密钥的代码:

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

例如,如果我想找到一个客户名称 " RoNaldo "时,当我像 " ronaldo "一样写启动字时,那就不起作用。实际上,当编写像" RoNaldo "一样的相同单词时,它将显示在表中。因此,请为此提供正确的代码。

esto leayudará:如何在JTable上执行不敏感的过滤器?

pero sin mas nada,laexpresión常规que debe usar es "(?i)"+search

tr.setRowFilter(RowFilter.regexFilter("(?i)" + search));

您必须使用类似的东西,

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));
 }

除了对案例不敏感的搜索之外,对该列的排序也应该是不敏感的。

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

上面的列假定为1,将其调整为正确的列。

最新更新