【问题标题】: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.TextAreajavax.swing.JTextArea?请在以后的帖子中具体说明。在讲多种不同母语的人访问的论坛上调试代码 sn-ps 已经够难了,以至于想知道所使用的确切类。

标签: java swing jscrollpane jtextarea jscrollbar


【解决方案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 - 为什么不添加一个函数来添加文本。例如,我有一个向我的文本区域添加文本的功能。向我的函数添加额外的行以自动更新它的简单问题。
猜你喜欢
  • 2014-12-20
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2011-09-30
相关资源
最近更新 更多