【发布时间】:2016-04-19 10:49:57
【问题描述】:
我现在正在开发一个 JavaFX 8 应用程序,其中我有一个 tableView 和一些上面的文本字段,可以搜索/过滤 tableView 中的某些列。我在 textFields 中添加了一个侦听器,以便在检测到更改时自动触发过滤。我使用下面的代码来做到这一点。
textField_filterAddress.textProperty().addListener((observable, oldValue, newValue) -> {
doSomething(); // in this case, filter table data and refresh tableView afterwards
});
我现在的问题是: 在触发过滤之前集成某种时间延迟的最简单方法是什么?我想等待几毫秒,因为每次用户进行过滤时,它都会执行一个新的数据库查询,而且我认为这对于用户输入的每个字符都不是必需的。我宁愿等到他/她完成了他的输入。 整个监听器中是否已经内置了某种类似的功能?还是我必须实施自己的解决方案?如果是这样,怎么做?我想到了某种并发解决方案,这样软件的其余部分就不会在等待期间冻结。但我想我会在这里问是否有更简单的解决方案,然后再考虑我自己的方式......
提前致谢!
【问题讨论】:
-
您预计总共有多少数据?如果不是太多,最初加载所有内容并使用
FilteredList可能是合理的。 -
sillyfly,不幸的是,我最初不允许加载所有内容,因为这是一个有一定限制的大学项目
标签: javafx listener delay timedelay livesearch