我有一个大约 11000 行的 JTable 和一个用于过滤正则表达式的搜索框。我在搜索框中的代码如下所示:
getDocument().addDocumentListener(new DocumentListener()
{
public void insertUpdate(DocumentEvent e)
{
final RowFilter<TableModel, Object> rf;
try
{
rf = RowFilter.regexFilter(getText(), 0);
}
catch (java.util.regex.PatternSyntaxException exception)
{
logger.info("Failed to compile regex.", exception);
return;
}
sorter.setRowFilter(rf);
}
.......
问题是整个 UI 在过滤操作期间变得无响应。我想这是因为过滤是在 EventDispatchThread 中完成的,所以有没有办法以某种方式将过滤放在工作线程中?