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)
但没有什么工作:(
你能帮我解决这个问题吗?
谢谢
- 编辑 -
看起来问题是因为线程问题.滚动条值正在更新为上一个文本值.实际上,在检索滚动值时,它不会检索最新值,但是它的值越来越大,因此滚动条设置为上一条消息的结尾,而不是实际的最后一行.
我不知道这个问题的实际问题,但我找到了另一种解决方案.
我正在使用文本长度在文本末尾设置插入符号的位置.
logs.setText(logText);
logs.positionCaret(logText.length());
Run Code Online (Sandbox Code Playgroud)
它对我有用.:)