JavaFX:在 textArea 中设置文本后,在单独的线程中设置滚动到底部不起作用
JavaFX : After setting text in textArea, setting scroll to bottom in separate thread is not working
我创建了一个 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);
});
我也尝试过 运行 在单独的线程中编写代码,例如
new Thread() {
public void run(){
System.out.println("called set test");
logs.setText([setting log text]);//Text logs
logDisplay.setVvalue(1.0);
}
}.start();
但没有任何效果:(
你能帮我看看这是怎么回事吗?
谢谢
--编辑--
看起来问题是因为线程问题。滚动条值正在更新为之前的文本值。实际上,在检索滚动值时,它不是在检索最新值,而是在获取较旧的值,因此滚动条设置为上一条消息的末尾,而不是实际的最后一行。
我不知道这个问题的实际问题,但我找到了替代解决方案。
我正在使用文本长度设置插入符号在文本末尾的位置。
logs.setText(logText);
logs.positionCaret(logText.length());
它对我有用。 :)
我创建了一个 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);
});
我也尝试过 运行 在单独的线程中编写代码,例如
new Thread() {
public void run(){
System.out.println("called set test");
logs.setText([setting log text]);//Text logs
logDisplay.setVvalue(1.0);
}
}.start();
但没有任何效果:(
你能帮我看看这是怎么回事吗?
谢谢
--编辑--
看起来问题是因为线程问题。滚动条值正在更新为之前的文本值。实际上,在检索滚动值时,它不是在检索最新值,而是在获取较旧的值,因此滚动条设置为上一条消息的末尾,而不是实际的最后一行。
我不知道这个问题的实际问题,但我找到了替代解决方案。
我正在使用文本长度设置插入符号在文本末尾的位置。
logs.setText(logText);
logs.positionCaret(logText.length());
它对我有用。 :)