自动滚动到文本区域的底部
Posted
技术标签:
【中文标题】自动滚动到文本区域的底部【英文标题】:Automatically scroll to the bottom of a text area 【发布时间】:2012-02-18 12:21:58 【问题描述】:我有一个带有滚动条的文本区域。我会定期向其中添加新的文本行。我希望文本区域在添加新行时自动滚动到最底部的条目(最新的条目)。我怎样才能做到这一点?
textAreaStatus = new WebTextArea();
scrollPane = new JScrollPane(textAreaStatus);
textAreaStatus.setBackground(Color.black);
textAreaStatus.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
【问题讨论】:
WebTextArea
是否扩展 java.awt.TextArea
或 javax.swing.JTextArea
?请在以后的帖子中具体说明。在讲多种不同母语的人访问的论坛上调试代码 sn-ps 已经够难了,以至于想知道所使用的确切类。
【参考方案1】:
看看 DefaultCaret 的 updatePolicy 属性:它可能会做你想做的事
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(ALWAYS_UPDATE);
Rob (@camickr) 的 nice summary of options
【讨论】:
我在 IDE 中出错了,我输入了 DefaultCaret。像 ALWAYS_UPDATE 一样caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
我应该把这段代码放在哪里?我应该什么时候调用您提供的代码以及在哪里调用?
@user3764804 回滚了编辑,因为它没有必要 - 静态导入会变魔术 ;-)【参考方案2】:
textArea.setCaretPosition(textArea.getDocument().getLength());
【讨论】:
每次我向 taxArea 添加文本时,我应该打电话给textArea.setCaretPosition(textArea.getDocument().getLength());
吗? 还有其他方法可以自动完成吗? textArea 是否有任何监听器可供使用?
@itro - 为什么不添加一个函数来添加文本。例如,我有一个向我的文本区域添加文本的功能。向我的函数添加额外的行以自动更新它的简单问题。以上是关于自动滚动到文本区域的底部的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery,我如何强制访问者滚动到文本区域的底部以启用提交按钮?