如何到达TextArea的末尾

时间:2011-12-22 12:47:44

标签: java swing jscrollpane jtextarea

  

可能重复:
  How to set AUTO-SCROLLING of JTextArea in Java GUI?

我正在创建一个应用程序,用户在TextField中键入文本,当 actionPerformed 时,文本会从TextArea附加到TextArea
JScrollPane上添加了TextArea。当声明列的行数出来时,用户可以滚动查看文本。但是,当他通过TextField将一些文字输入TextArea时,他需要每次滚动,因为TextArea附加的最后一行不会自动滚动到最后一行。
任何人都可以帮助我自动或者当actionPerformed,{{1}}将滚动到最后?

2 个答案:

答案 0 :(得分:5)

魔法驻留在DefaultCaret.updatePolicy中:

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

有关详细信息,另请参阅Rob's blog entry

答案 1 :(得分:3)

试试这个:

jTextArea.selectAll();
int last = jTextArea.getSelectionEnd();
jTextArea.select(last, last);

jTextArea是对TextArea的引用。

但是,如果有大量文本,前面的示例可能会非常慢,所以我提供了另一种方法来执行此操作:

jTextArea.setCaretPosition(jTextArea.getDocument().getLength());

编辑:在互联网上浏览替代解决方案并阅读this answer to a similar question之后,我意识到@ kleopatra的解决方案更有效。但是,接受你认为合适的答案完全是你的特权(我看你已经接受了我的答案)。

@kleopatra我赞成你补偿。 :)