有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我希望下面的方法替换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) 个答案

  1. # 1 楼答案

    I select more than a single character in the JTextField, the caret position skips ahead.

    final int caretPosition = inputTextField.getCaretPosition();
    

    通常,在选择文本时,从左到右进行选择,以便插入符号位置位于要替换的文本的末尾

    我认为你应该使用:

    final int caretPosition = inputTextField.getSelectionStart();