【问题标题】:How to change the default cursor position of a JTextArea?如何更改 JTextArea 的默认光标位置?
【发布时间】:2013-07-21 05:20:37
【问题描述】:

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

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

我有什么办法可以做这样的事情:

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

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

【问题讨论】:

    标签: java swing cursor jtextarea


    【解决方案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 来重新定位插入符号。

    【讨论】:

      猜你喜欢
      • 2023-01-14
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2011-08-20
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多