我希望下面的方法替换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);
            }
        });

    }

最佳答案

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


final int caretPosition = inputTextField.getCaretPosition();


通常,当您选择文本时,请从左至右进行选择,以使插入标记的位置位于要替换的文本的末尾。

我认为您应该使用:

final int caretPosition = inputTextField.getSelectionStart();

09-07 16:52