我现在正在开发一个 JavaFX 8 应用程序,其中我有一个 tableView 和上面的一些 textFields,它们可以搜索/过滤 tableView 中的某些列。我在 textFields 中添加了一个侦听器,以便在检测到更改时自动触发过滤。我使用下面的代码来做到这一点。
textField_filterAddress.textProperty().addListener((observable, oldValue, newValue) -> {
doSomething(); // in this case, filter table data and refresh tableView afterwards
});
我现在的问题是:在触发过滤之前,集成某种时间延迟的最简单方法是什么?我想等待几毫秒,因为每次用户进行过滤时,它都会执行一个新的数据库查询,而且我认为这对于用户输入的每个字符都不是必需的。我宁愿等到他/她完成了他的输入。整个监听器中是否已经内置了某种类似的功能?还是我必须实施自己的解决方案?如果是这样,怎么做?我想到了某种并发解决方案,这样软件的其余部分就不会在等待期间冻结。但我想我会在这里问是否有更简单的解决方案,然后再考虑我自己的方式......
提前非常感谢!