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