我有一个JavaFX 8应用程序,并希望允许任务修改两个不同的UI元素.据我了解,如果我要修改一个Label,我可以使用mylabel.textProperty().bind(mytask.messageProperty())绑定到Label,并在Task中使用updateMessage().
我怎么能用两种不同的任意类型做到这一点?我已经查看了并发和JavaFX文档中的示例,但对我来说,他们并没有很好地解释这一点.
我理解一个Task本身就有Message(String),Progress(double/long),Title(String)和Value(用户定义)属性,但是如果我想要两个或更多我自己的任意类型属性来控制UI元素呢?(并且希望避免使用runLater().)
我可以在任务上创建任意属性吗?我觉得我错过了一些明显的东西.
我正在开发一个JavaFX 8应用程序,我有一个tableView和一些textFields,可以搜索/过滤tableView中的某些列.我已经为textFields添加了一个监听器,以便在检测到更改时自动触发过滤.我使用下面的代码来做到这一点.
textField_filterAddress.textProperty().addListener((observable, oldValue, newValue) -> {
doSomething(); // in this case, filter table data and refresh tableView afterwards
});
Run Code Online (Sandbox Code Playgroud)
我现在的问题是:在过滤被触发之前,什么是最简单的集成某种时间延迟的方法?我想等几毫秒,因为每次用户过滤它时都在执行一个新的数据库查询,我认为这对于用户输入的每个字符都不是必需的.我宁愿等到他/她完成了他的输入.是否有某种类似的功能已经内置到整个听众的事情中?或者我必须实施自己的解决方案?如果是这样,怎么样?我考虑过某种并发解决方案,因此其他软件在等待期间不会冻结.但我以为我会问这里是否有一个更简单的解决方案,然后再考虑我自己的方式......
非常感谢提前!