Java 如何更改JTextArea的默认光标位置?

Java 如何更改JTextArea的默认光标位置?,java,swing,cursor,jtextarea,Java,Swing,Cursor,Jtextarea,在中,我询问如何将光标设置到JTextArea的底部。答案是textField.getDocument().getLength()从技术上讲,我可以在每次插入文本后使用textField.getDocument().getLength(),但这并不方便 然而,这并不完全是我的意思。我需要更改光标位置的JTextArea属性。在我的程序中,结果是JTextArea。它从多个类和方法中获取文本,因此每次在\u result.append(“text”)之后使用textField.getDocumen

在中,我询问如何将光标设置到JTextArea的底部。答案是
textField.getDocument().getLength()
从技术上讲,我可以在每次插入文本后使用
textField.getDocument().getLength()
,但这并不方便

然而,这并不完全是我的意思。我需要更改光标位置的JTextArea属性。在我的程序中,结果是JTextArea。它从多个类和方法中获取文本,因此每次在
\u result.append(“text”)
之后使用
textField.getDocument().getLength()
,既不方便,又容易出错,不灵活

我有没有办法做一些类似的事情:

// this is just a pseudocode
_result.setDefaultCursorPosition(bottom);

然后,每当文本出现时(无论来自哪个类或方法),光标始终位于底部。

这将在每次文档更改后将插入符号移动到结束位置:

_result.getDocument().addDocumentListener(new DocumentListener() {
        private void atEnd() { 
            _result.setCaretPosition(_result.getText().length()); 
        }
        public void insertUpdate(DocumentEvent evt) { atEnd(); }
        public void removeUpdate(DocumentEvent evt) { atEnd(); }
        public void changedUpdate(DocumentEvent evt) { atEnd(); }
    });

它仍然允许用户通过单击或通过调用
setCaretPosition
重新定位插入符号

这将在每次文档更改后将插入符号移动到结束位置:

_result.getDocument().addDocumentListener(new DocumentListener() {
        private void atEnd() { 
            _result.setCaretPosition(_result.getText().length()); 
        }
        public void insertUpdate(DocumentEvent evt) { atEnd(); }
        public void removeUpdate(DocumentEvent evt) { atEnd(); }
        public void changedUpdate(DocumentEvent evt) { atEnd(); }
    });
它仍然允许用户通过单击或通过调用
setCaretPosition
重新定位插入符号