2012-01-25 62 views
12

我有一个滚动条的文本区域。我会定期添加新的文本行。我希望文本区域在添加新行时自动滚动到最底部的条目(最新的条目)。我怎样才能做到这一点?自动滚动到文本区域的底部

textAreaStatus = new WebTextArea(); 
scrollPane = new JScrollPane(textAreaStatus); 
textAreaStatus.setBackground(Color.black); 
textAreaStatus.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); 
+1

不'WebTextArea'延长'什么java.awt.TextArea'或'javax.swing.JTextArea'?请在以后的帖子中具体说明。在讲许多不同的本地语言的人访问的论坛上调试代码片段已经很困难,因为他们想知道所用的确切类别。 –

回答

19

看一看DefaultCaret的updatePolicy属性:它可能做你想做

DefaultCaret caret = (DefaultCaret) textArea.getCaret(); 
caret.setUpdatePolicy(ALWAYS_UPDATE); 

一个nice summary of options罗布(@camickr)

+1

**我在IDE中得到错误,我把DefaultCaret。 ALWAYS_UPDATE像**'caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);'**我应该在哪里放这段代码?我应该什么时候打电话给你提供的代码,并在哪里?** – itro

+0

似乎不能在java8 – poordeveloper

+0

@周武冰有趣..会检查,谢谢。 – kleopatra

14
textArea.setCaretPosition(textArea.getDocument().getLength()); 
+0

每当我将文本添加到taxArea时,我都应该调用 'textArea.setCaretPosition(textArea.getDocument()。getLength());'? **是否有任何其他方式自动执行它?是否有任何textArea的监听器?** – itro

+1

@itro - 为什么不添加一个函数来添加文本。例如,我有一个将文本添加到我的文本区域的功能。简单的添加一个额外的行到我的函数自动更新它。 – Sh4d0wsPlyr