1

前の質問で、カーソルを JTextArea の一番下に設定する方法を尋ねました。答えはtextField.getDocument().getLength() 、技術的には、textField.getDocument().getLength()テキストを挿入するたびに使用できますが、これは便利ではありません。

しかし、これはまさに私が意図したものではありません。cursor positionの JTextArea PROPERTY を変更する必要があります。私のプログラム_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 に答える