我的Java应用程序中有TextArea,我在文本行中附加了很多内容。我需要ScrollPane滚动到最后一个附加(到TextArea的底部)。我怎么能这样做?
答案 0 :(得分:9)
你可以通过将插入位置移动到底部来实现,这会自动滚动TextArea:
textArea.setCaretPosition(textArea.getDocument().getLength());
答案 1 :(得分:4)
Text Area Scrolling解释了滚动的工作原理,并提供了一种可能更容易的替代解决方案。
答案 2 :(得分:2)
如果您滚动到页面中间讨论政策,您应该找到您想要实现的目标:http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html
答案 3 :(得分:2)
由于Amjad Masad已经said,您需要在插入文本后将插入位置设置为文档的最后位置。
我想添加以下注释:如果你使用JTextArea
作为某种输出日志(AKA一个工作线程不断地填充它),我只会在文档的末尾设置插入位置,如果目前的插入符号位置已经结束(插入之前)。这允许用户单击文本内的某个位置并在不自动向下滚动的情况下读取它。如果用户想要查看最新的和最好的,那么(s)他必须按Ctrl + Down将插入符号放在文档的末尾。
答案 4 :(得分:0)
如果您在美国东部时间,当您致电追加时,您应该检查。如果你在调用append时不在EDT中,那么JTextArea不会滚动到最后一行(请参阅我的帖子,其中有一个可运行的例子:JScrollPane scroll at last added line)。