java fx输出_JavaFX中具有输入和输出参数的并发后台任务或服务
寧愿這是一個(gè)非常簡單的概念,但是由于我對(duì)JavaFX的并發(fā)性完全陌生.我一直在努力理解這個(gè)概念.
在構(gòu)建一個(gè)非常簡單的JavaFX應(yīng)用程序時(shí),我想在后臺(tái)執(zhí)行一些冗長的任務(wù),并使UI免受凍結(jié).
在下面的示例中,我試圖創(chuàng)建一個(gè)簡單的后臺(tái)任務(wù)服務(wù),然后使用ControlsFX Dialog在主UI窗口上顯示進(jìn)度欄.
但是,我想知道如何為該服務(wù)提供一些輸入?yún)?shù)并從中獲取布爾輸出.這在C#BackgroundWorker中確實(shí)很簡單,但是在JavaFX中仍然無法弄清楚.任何提示將是一個(gè)很大的幫助.
嘗試了這個(gè)簡單的例子
public void runTask(Stage stage) throws URISyntaxException, IOException {
Service service = new Service() {
@Override
protected Task createTask() {
return new Task() {
@Override
protected Void call() throws InterruptedException, URISyntaxException, IOException {
// some time consuming task here
// use the input arguments and perform some action on it
// then set the process result to a Boolean and return after the task is completed
// also keep hold back any other process to from executing on UI
return null;
}
};
}
};
Dialogs.create()
.owner(stage)
.title("Performing Task!")
.masthead("Please wait...")
.showWorkerProgress(service);
service.setOnSucceeded(new EventHandler() {
@Override
public void handle(WorkerStateEvent event) {
System.out.println("done:" + event.getSource().getValue());
}
});
service.setOnFailed(new EventHandler() {
@Override
public void handle(WorkerStateEvent event) {
throw new UnsupportedOperationException("Failed."); //To change body of generated methods, choose Tools | Templates.
}
});
service.setOnCancelled(new EventHandler() {
@Override
public void handle(WorkerStateEvent event) {
throw new CancellationException("Cancelled."); //To change body of generated methods, choose Tools | Templates.
}
});
service.start();
}
總結(jié)
以上是生活随笔為你收集整理的java fx输出_JavaFX中具有输入和输出参数的并发后台任务或服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab 类 继承,继承MATLAB
- 下一篇: linux创建文件内容三行,shell之