我想通过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,将其调整为正确的列。