JavaFX:在textArea中设置文本后,在单独的线程中设置滚动到底部不起作用

Piy*_*ush 7 java multithreading javafx javafx-2

我创建了一个JavaFX应用程序,我用一个后台进程更新日志.所以我在TextArea中设置日志文本并使用设置滚动到底部logs.setScrollTop(Double.MAX_VALUE).但滚动条从底部设置为一点点.我还在ScrollPan中尝试了TextFlow,并使用设置滚动到底部logDisplay.setVvalue(1.0).它也给出了相同的结果.

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);
});
Run Code Online (Sandbox Code Playgroud)

我也尝试在单独的线程中运行代码

new Thread() {
    public void run(){
        System.out.println("called set test");
        logs.setText([setting log text]);//Text logs
        logDisplay.setVvalue(1.0);
    }
}.start();
Run Code Online (Sandbox Code Playgroud)

但没有什么工作:(
你能帮我解决这个问题吗?
谢谢

- 编辑 -
看起来问题是因为线程问题.滚动条值正在更新为上一个文本值.实际上,在检索滚动值时,它不会检索最新值,但是它的值越来越大,因此滚动条设置为上一条消息的结尾,而不是实际的最后一行.

Piy*_*ush 6

我不知道这个问题的实际问题,但我找到了另一种解决方案.

我正在使用文本长度在文本末尾设置插入符号的位置.

logs.setText(logText);
logs.positionCaret(logText.length());
Run Code Online (Sandbox Code Playgroud)

它对我有用.:)