在替换JTextField中的文本选择后更正插入符号位置

mmg*_*o27 1 java swing caret jtextfield

我想要下面的方法来替换a中的文本选择,JTextField并用一些输入替换它String.我的问题是,如果我选择了多个单个字符JTextField,则插入位置会向前跳过.

如何确保插入位置保持在正确的位置?

private void addStringAtCaretPos(String c) {
        final int caretPosition = inputTextField.getCaretPosition();
        inputTextField.replaceSelection(c);

        inputTextField.requestFocus();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                inputTextField.setCaretPosition(caretPosition + 1);
            }
        });

    }
Run Code Online (Sandbox Code Playgroud)

cam*_*ckr 5

我在JTextField中选择了多个字符,插入位置向前跳过.

final int caretPosition = inputTextField.getCaretPosition();
Run Code Online (Sandbox Code Playgroud)

通常,当您选择从左到右选择的文本时,插入位置位于要替换的文本的末尾.

我认为你应该使用:

final int caretPosition = inputTextField.getSelectionStart();
Run Code Online (Sandbox Code Playgroud)