如何在Java GUI中设置JTextArea的AUTO-SCROLLING?

Yat*_*oel 66 java user-interface swing jscrollpane jtextarea

我在JScrollPane上嵌入了一个JTextArea,并使用该JTextArea进行输出.

我想,只要在​​输出中超出的JTextArea的大小,JTextArea中自动滚动,这样用户就不必做手工向下滚动查看最近的输出.

我怎样才能做到这一点?

我已经将JTextArea和JScrollPane的autoscroll属性设置为true.

cam*_*ckr 145

使用JDK1.4.2(或更早版本)时,您在论坛中找到的最常见建议是使用如下代码:

textArea.append(...);
textArea.setCaretPosition(textArea.getDocument().getLength());
Run Code Online (Sandbox Code Playgroud)

但是,我刚刚注意到在JDK5中,这个问题实际上已经通过API更改解决了.您现在可以通过在文本区域的DefaultCaret上设置属性来控制此行为.使用这种方法代码将是:

JTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关此主题的更详细说明:文本区域滚动

  • 根据您的答案中引用的有关文本区域滚动的文章,设置插入符号更新策略不再有效。最好坚持明确设置插入符号位置。 (2认同)