我想从我的JavaFX应用程序定期执行任务.该任务从远程流中提取数据.
虽然我知道我可以使用如下建议的定时器:
我相信这应该可以使用JavaFX Service对象完成.在Javadoc中提到了指定一个自定义执行程序(这里会想到ScheduledThreadPoolExecutor),但是如何指定周期和延迟呢?理想情况下,这将使用服务的通常启动,重置,重启和状态绑定...
public class MyFirstLineService extends Service<String> {
private StringProperty url = new SimpleStringProperty(this, "url");
public final void setUrl(String value) { url.set(value); }
public final String getUrl() { return url.get(); }
public final StringProperty urlProperty() { return url; }
public MyFirstLineService() {
setExecutor(new ScheduledThreadPoolExecutor());
}
protected Task createTask() {
final String _url = getUrl();
return new Task<String>() {
protected String call() throws Exception {
URL u = new URL(_url);
BufferedReader in = new BufferedReader(
new InputStreamReader(u.openStream()));
String result = in.readLine();
in.close();
return result;
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
JavaFX 问题跟踪器 RT18702中请求 ScheduledService 。
跟踪器包括尚未合并到 2.2 分支中的初步实现的源代码。如果需要,您可以查看该来源,看看它是否有助于改进您的解决方案。
| 归档时间: |
|
| 查看次数: |
2027 次 |
| 最近记录: |