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

时间:2015-07-11 21:46:18

标签: java swing jtextfield caret

我希望使用以下方法替换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);
            }
        });

    }

1 个答案:

答案 0 :(得分:5)

  

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

final int caretPosition = inputTextField.getCaretPosition();

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

我认为你应该使用:

final int caretPosition = inputTextField.getSelectionStart();