我遇到了一些与我的Java项目有关的问题。
我使用JTable
和JTextField
来过滤表格的行,这就是我的问题:
如果我在这个textfield
中写了一些内容,那么该表会适当地过滤结果,但当我删除此textfield
中的所有文本时,""
字符串后面的最后一个字符是不可见的。
如果我使用textfield.setText("")
,则textfield
实际上根本不是空的,并且它不允许使用旧行刷新我的表。
换句话说,我需要将textfield
设置为""
字符串,这样它就可以使用普通行更新\刷新JTable
(不应用任何过滤器)。
是否有任何方法或听众可以解决这个问题?
感谢。
答案 0 :(得分:3)
您应该使用DocumentListener来监听测试字段的基础文档中的更改。
但听起来您的问题是您在设置过滤器之前没有进行检查。如果没有文本,则应将过滤器设置为null。
if (text.trim().length() == 0) { // or if (text.isEmpty())
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter(text));
}
请参阅完整示例here
的更多解释