Ich habe eine JavaFX-Anwendung erstellt, wo ich Protokoll mit einem Hintergrundprozess aktualisieren. Also setze ich Logtext in TextArea und setze Scrolling nach unten mit logs.setScrollTop(Double.MAX_VALUE)
. aber Scrollbar ist von unten nach oben eingestellt. Ich habe auch versucht TextFlow in ScrollPan und Einstellung nach unten scrollen mit logDisplay.setVvalue(1.0)
. Es gibt auch das gleiche Ergebnis.JavaFX: Nach dem Einstellen von Text in TextArea funktioniert Einstellung nach unten in separaten Thread nicht funktioniert
Platform.runLater(() -> {
logs.setText([setting log text]);//TextArea logs
logs.setScrollTop(Double.MAX_VALUE));
});
//For TextFlow inside ScrollPane
Platform.runLater(() -> {
logs.setText([setting log text]);//Text logs
logDisplay.setVvalue(1.0);
});
Ich habe auch versucht, Code in separaten Thread wie
new Thread() {
public void run(){
System.out.println("called set test");
logs.setText([setting log text]);//Text logs
logDisplay.setVvalue(1.0);
}
}.start();
Aber nichts funktioniert :(
Können Sie mir helfen, was falsch ist in diesem laufen
Dank
? - Bearbeiten -
Sieht aus wie das Problem wegen Threading-Problem ist. Scrollbar Wert wird auf den vorherigen Textwert aktualisiert. Eigentlich während Retriev g scroll value Es wird nicht der letzte Wert abgerufen, aber es wird ein älterer Wert, sodass die Bildlaufleiste auf das Ende der vorherigen Nachricht und nicht auf die letzte Zeile gesetzt wird.
Ich habe eine wirklich einfache Lösung [in dieser Frage] (http://stackoverflow.com/questions/43886613/javafx-textarea-cursor-moves-back-to-the-first-line-on-new) gepostet -text/43886919 # 43886919), die 'appendText' anstelle von' setText' verwendet und das manuelle Setzen des Caret überflüssig macht. – DVarga