我创建了JTable行过滤器,它运行良好并根据在JTextfield中键入来过滤行,但它根据行中任何位置的类型字符进行过滤,而我想过滤以键入字符开头的行即可。 它有任何正则表达式标志吗?
我的表格行过滤器代码:
public static void setFilter(JTable table,String value) {
sorter = new TableRowSorter<>((DefaultTableModel)table.getModel());
table.setRowSorter(sorter);
RowFilter<DefaultTableModel, Object> rf = null;
try {
rf = RowFilter.regexFilter("(?i)" + value, columnIndex); //("(?i)" for case insensitive filter
} catch (java.util.regex.PatternSyntaxException e) {
return;
}
sorter.setRowFilter(rf);
}
答案 0 :(得分:1)
rf = RowFilter.regexFilter("(?i)" + value, columnIndex);
但它会根据行中任何位置的类型字符进行过滤
它根据columnIndex指定的列中的数据进行过滤。
我想过滤以键入字符开头的行。
如果您要根据与指定列中找到的数据的第一个字符匹配进行过滤,那么您应该可以使用:
rf = RowFilter.regexFilter("^" + value, columnIndex);
阅读Pattern
课程的API。 Boundary Matchers
部分显示“^”用于匹配数据开头的字符。