Java 如何更改JTextArea的默认光标位置?
在中,我询问如何将光标设置到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
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
重新定位插入符号