如何从jtextfield中的类型字符开始过滤jtable行

时间:2018-05-22 19:11:41

标签: java regex swing jtable rowfilter

我创建了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);
}

1 个答案:

答案 0 :(得分:1)

rf = RowFilter.regexFilter("(?i)" + value, columnIndex);  
  

但它会根据行中任何位置的类型字符进行过滤

它根据columnIndex指定的列中的数据进行过滤。

  

我想过滤以键入字符开头的行。

如果您要根据与指定列中找到的数据的第一个字符匹配进行过滤,那么您应该可以使用:

rf = RowFilter.regexFilter("^" + value, columnIndex);  

阅读Pattern课程的API。 Boundary Matchers部分显示“^”用于匹配数据开头的字符。