1

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

然而,这并不完全是我的意思。我需要更改光标位置的 JTextArea 属性。在我的程序_result中是 JTextArea。它从多个类和方法中获取文本,因此textField.getDocument().getLength()每次使用后_result.append("text")都不方便,并且代码容易出错且不灵活

有什么办法我可以做类似的事情:

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

然后每当文本到达那里(无论是什么类或方法),光标总是在底部。

4

1 回答 1

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

于 2013-07-27T10:33:03.950 回答