Ho creato un'applicazione JavaFX in cui sto aggiornando il registro con un processo in background. Quindi sto impostando il testo del registro in TextArea e impostando lo scorrimento verso il basso usando logs.setScrollTop(Double.MAX_VALUE)
. ma la barra di scorrimento è impostata su un po 'dal basso. Ho anche provato TextFlow all'interno di ScrollPan e ho impostato lo scorrimento verso il basso usando logDisplay.setVvalue(1.0)
. Sta anche dando lo stesso risultato.JavaFX: dopo aver impostato il testo in textArea, l'impostazione di scorrimento verso il basso in thread separati non funziona
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);
});
Ho anche cercato di eseguire codice in thread separato come
new Thread() {
public void run(){
System.out.println("called set test");
logs.setText([setting log text]);//Text logs
logDisplay.setVvalue(1.0);
}
}.start();
Ma niente sta lavorando :(
Mi potete aiutare cosa c'è di sbagliato in questo
Grazie
? - Modifica--
Sembra che il problema sia dovuto a problemi di threading Il valore della barra di scorrimento si sta aggiornando al valore di testo precedente. g valore di scorrimento non sta recuperando l'ultimo valore ma sta diventando vecchio valore in modo che la barra di scorrimento sia impostata alla fine del messaggio precedente, non nell'ultima riga effettiva.
Ho postato una soluzione molto semplice [in questa domanda] (http://stackoverflow.com/questions/43886613/javafx-textarea-cursor-moves-back-to-the-first-line-on-newew -text/43886919 # 43886919) che usa 'appendText' piuttosto che' setText' ed elimina la necessità di impostare manualmente il cursore. – DVarga