Java jtextarea滚动

Java jtextarea滚动,java,swing,scroll,jtextarea,Java,Swing,Scroll,Jtextarea,我使用的是jtextarea,它在应用程序执行期间动态填充(如日志)。我希望删除垂直滚动条的自动滚动,我的意思是文本正在字段中添加,插入符号位置没有改变(只有在我手动拖动它时,它才会改变)。我该怎么做?我尝试了scrollPane.getHorizontalScrollBar().setAutoscrolls(false) 但这并没有帮助。如果我正确理解了你的问题,你可以使用以下内容: myTextArea.setCaretPosition(myTextArea.getDocument().ge

我使用的是jtextarea,它在应用程序执行期间动态填充(如日志)。我希望删除垂直滚动条的自动滚动,我的意思是文本正在字段中添加,插入符号位置没有改变(只有在我手动拖动它时,它才会改变)。我该怎么做?我尝试了
scrollPane.getHorizontalScrollBar().setAutoscrolls(false)

但这并没有帮助。

如果我正确理解了你的问题,你可以使用以下内容:

myTextArea.setCaretPosition(myTextArea.getDocument().getLength() - 1);

文本区域本身不会滚动;你必须在你的代码中有一些东西才能让它发生

通常的方法是在文档末尾设置插入符号(加上
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
当您使用Java 5时;请参阅)

要停止滚动,您必须在应用程序中找到代码并将其关闭


setAutoscrolls()
在这种情况下不起作用,因为它仅在拖动选择文本时使用,并且鼠标位于组件外部,而且此属性的用途是其他的(如果
true
,则只要鼠标位于组件外部,就会生成合成鼠标事件)。

好主意,但是不要使用getText()。必须根据文档中的所有文本生成新字符串。只需使用
getDocument().getLength()
@camickr:谢谢!我以前不知道这在内部是如何工作的。在DefaultCaret.NEVER_更新模式下,caret.getDot()返回0。如何找到当前的插入符号位置以与myTextArea.getDocument().getLength()进行比较并执行必要的操作?通过调用
myTextArea.getCaretPosition()
。您想自动滚动还是避免滚动?你的问题不是很清楚。。。