ich auf einer JavaFX-Anwendung arbeitete, da habe ich ein Skript, das eine zip, gefolgt von einem anderen Betrieb wie Aktualisieren von Dateien usw.TextArea- wird nicht aktualisiert, während Zip-Extraktion
ich ein Textfeld haben will extrahieren, die anzeigt, was gehen im Hintergrund auf, wie "Zip Extrahieren ...", "Aktualisieren von xyz-Datei" usw.
Bis jetzt habe ich folgende Art und Weise versucht haben:
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 Klasse
abstract class MyTask<T> extends Task<T> {
abstract public void updateMessage(String message);
}
Ich habe versucht, updateProgress-Methode, Platform.runLater() zu verwenden, aber nichts funktioniert.
Alle Nachrichten, die ich in textArea ausgedruckt habe, werden gedruckt, nachdem alle Operationen ausgeführt wurden.
Bitte helfen.
Sie müssen Ihre 'Task' in einem neuen Thread ausführen, siehe z. https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm – Itai
@sillyfly Vielen Dank. Löste mein Problem. – chandil03
Dann in Betracht ziehen, Ihre Frage zu löschen ... – GhostCat