我在TextFlow
中包含了一个JavaFX ScrollPane
,我试图在Text
添加新的TextFlow
时自动滚动到底部}。
我尝试将最多ScrollPane
个vvalue
的听众附加到:
ScrollPane
的{{1}}属性本身。
vvalue
锁定到底部,这是不可取的。 ScrollPane
的{{1}}属性。
ScrollPane
的子列表。
viewportBounds
之前滚动到 底部的位置。我已尝试在滚动之前明确请求布局,但这没有效果非常感谢,我想滚动一下,如果新添加的内容太大而无法一次显示,TextFlow
滚动以使新添加位于顶部,并且用户应手动滚动以查看“溢出”。正如我所说,这将是一个额外的好处,只是滚动到底部会很好,因为我不期望如此大的增加(定期)。
不,我没有切换到Text
,这会相对简单。我希望能够轻松地向ScrollPane
添加常规,粗体和斜体文字,TextArea
不支持此功能。我也尝试了Thomas Mikula的RichTextFX,但是
TextFlow
而没有解释。因此,非常感谢任何适用于TextArea
的解决方案。
编辑:解决方案,按要求:
StackOverflowError
它不会赢得任何代码风格的奖项,但因为这是一个我并不在乎的个人项目。
答案 0 :(得分:4)
修改第3种方法,使用layout()
代替requestLayout()
。
requestLayout()
将布局标记为 dirty ,并在下一个脉冲上重新布局。在代码中
requestLayout();
doSomethingThatDependsOnLayout();
doSomethingThatDependsOnLayout()
会看到旧布局。
layout()
立即(同步)执行布局,但前提是布局脏。 (在您的情况下,更改TextFlow的文本会将其布局标记为脏。)在代码中
layout();
doSomethingThatDependsOnLayout();
doSomethingThatDependsOnLayout()
会看到新布局。