1
我對JavaFX應用程序更新工作,在那裏,我有一個腳本,提取一個zip其次是一些其他操作如更新文件等文本區域不同時ZIP解壓
我想有一個顯示什麼包含textArea在後臺正在進行,如 「ZIP解壓......」, 「更新XYZ文件」 等
到現在我已經嘗試以下方法:
MyTask<String> task;
task = new MyTask<String>() {
@Override
protected String call() throws Exception {
File path = new File(exportTo.getAbsolutePath());
updateMessage("Extracting modular app to target directory...");
patcher.unZip(appPath.getAbsolutePath(), path.getAbsolutePath());
if (path.exists()) {
AppInfo info = getAppInfo();
patcher.patchAndroid(info, resourceZip, new File(path.getAbsolutePath() + "/" + appPath.getName().substring(0, appPath.getName().lastIndexOf("."))), this);
showOkAlert("Build completed!");
} else {
showOkAlert("Modular app folder not found");
}
return "";
}
@Override
protected void updateProgress(double workDone, double max) {
patcher.reportLogs(message);
}
private String message;
@Override
public void updateMessage(final String message) {
Platform.runLater(() -> patcher.reportLogs(message));
this.message = message;
//updateProgress(0, 0);
}
};
task.run();
MyTask類
abstract class MyTask<T> extends Task<T> {
abstract public void updateMessage(String message);
}
我試過使用updateProgress方法,Platform.runLater()但沒有任何工作。
在完成所有操作後,打印出的所有信息都印在textArea中。
請幫忙。
你需要在新線程上運行你的'Task',參見例如https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm – Itai
@sillyfly非常感謝。解決了我的問題。 – chandil03
然後考慮刪除你的問題... – GhostCat