Java Swing JScrollBar何时更新其大小?

Java Swing JScrollBar何时更新其大小?,java,swing,Java,Swing,我在JScrollPane中有一个JTextArea,我用display.append()将消息附加到它。我试图通过在添加文本后将滚动条的值设置为最大值,使其自动滚动。但是,getVerticalScrollBar().getMaximum()的值不会在追加一行后立即更新。我已尝试使用revalidate()、repaint()和updateUI()强制更新,但似乎找不到正确的函数 MWE: 一种可能的解决方案是将插入符号位置设置为文本的结尾(或开头),例如: textArea.setCaret

我在
JScrollPane
中有一个
JTextArea
,我用
display.append()
将消息附加到它。我试图通过在添加文本后将滚动条的值设置为最大值,使其自动滚动。但是,
getVerticalScrollBar().getMaximum()
的值不会在追加一行后立即更新。我已尝试使用
revalidate()
repaint()
updateUI()
强制更新,但似乎找不到正确的函数

MWE:


一种可能的解决方案是将插入符号位置设置为文本的结尾(或开头),例如:

textArea.setCaretPosition (textArea.getText ().length ()); // to scroll to the bottom
textArea.setCaretPosition (0); // to scroll to the top

我使用了类似的指令将插入符号位置设置为0,滚动条会自动滚动到顶部,因此它应该适用于您。

请提供一个可运行的示例(),以便我们能够理解并重现您的问题。在制作示例的过程中,我发现默认情况下,添加文本时窗口会滚动-我遇到的问题是,从单独的线程添加文本时不会出现这种情况。我想我以前见过这种解决方案。我认为它不会工作,因为我已经将editable设置为false,但它似乎做到了!
textArea.setCaretPosition (textArea.getText ().length ()); // to scroll to the bottom
textArea.setCaretPosition (0); // to scroll to the top