在previous question中,我问过如何将光标设置到JTextArea的底部。答案是textField.getDocument().getLength()
从技术上讲,我可以在每次插入文本后使用textField.getDocument().getLength()
,但这不方便。
然而,这并不是我的意思。我需要更改光标位置的 JTextArea PROPERTY 。在我的程序_result
中是JTextArea。它从多个类和方法中获取文本,因此在textField.getDocument().getLength()
之后每次使用_result.append("text")
都不方便,并且使代码容易出错并且不灵活
我有什么方法可以做类似的事情:
// this is just a pseudocode
_result.setDefaultCursorPosition(bottom);
然后每当文本进入那里时(无论从哪个类或方法开始),光标始终位于底部。
答案 0 :(得分:1)
这会在每次更改文档后将插入符号移动到结束位置:
_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
的其他调用来重新定位插入符号。