过滤JTable后发出问题

时间:2014-08-03 19:24:33

标签: java swing jtable

我遇到了一些与我的Java项目有关的问题。

我使用JTableJTextField来过滤表格的行,这就是我的问题: 如果我在这个textfield中写了一些内容,那么该表会适当地过滤结果,但当我删除此textfield中的所有文本时,""字符串后面的最后一个字符是不可见的。 如果我使用textfield.setText(""),则textfield实际上根本不是空的,并且它不允许使用旧行刷新我的表。

换句话说,我需要将textfield设置为""字符串,这样它就可以使用普通行更新\刷新JTable(不应用任何过滤器)。

是否有任何方法或听众可以解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:3)

您应该使用DocumentListener来监听测试字段的基础文档中的更改。

但听起来您的问题是您在设置过滤器之前没有进行检查。如果没有文本,则应将过滤器设置为null。

    if (text.trim().length() == 0) { // or if (text.isEmpty())
        rowSorter.setRowFilter(null);
    } else {
        rowSorter.setRowFilter(RowFilter.regexFilter(text));
    }

请参阅完整示例here

另请参阅How to Use Tables: Sorting and Filtering

的更多解释