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

时间:2013-07-21 05:20:37

标签: java swing cursor jtextarea

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);

然后每当文本进入那里时(无论从哪个类或方法开始),光标始终位于底部。

1 个答案:

答案 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的其他调用来重新定位插入符号。