Ich habe diese einfache Code, unter dem aktualisiert die TextArea
während updateProgress
:Anfügen Text JavaFX TextArea- während Update
textArea = new TextArea();
textArea.setEditable(false);
textArea.setFocusTraversable(false);
StackPane root = new StackPane();
root.setPadding(new Insets(10));
root.getChildren().add(textArea);
Scene scene = new Scene(root, 600, 350);
primaryStage.setTitle("JavaFX Concurrency");
primaryStage.setScene(scene);
primaryStage.show();
task = new Task<Integer>(){
@Override
protected Integer call() throws Exception {
int i;
for(i = 1; i <= 100; i++){
updateProgress(i, 100);
}
return i;
}
};
task.stateProperty().addListener(new ChangeListener<State>(){
@Override
public void changed(ObservableValue<? extends State> observable, State oldValue, State state) {
System.out.println(state);
}
});
task.progressProperty().addListener(new ChangeListener<Number>(){
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number val) {
Platform.runLater(new Runnable(){
@Override
public void run() {
textArea.appendText("Value : " + val.intValue() + "\n");
}
});
}
});
new Thread(task).start();
Aber leider war das Ergebnis falsch. Hier ist die Ausgabe:
Ich hatte erwartet, dass die Ausgabe Wert sein sollte: 1 Wert: 100..
Ich habe gerade versucht, das Concurrency-Paket in JavaFX zu testen. Kann mir jemand sagen, was los ist?
Haben Sie versucht, 'textArea.setEditable (false);' dadurch zu ändern 'textArea.setEditable (true);'? – Mxsky
@Mxsky, was ist der Punkt? –
Aus dem Dokument: "Legt fest oder gibt an, ob der Benutzer den Text im Textfeld bearbeiten kann." – Mxsky