java - 替换 JTextField 中的文本选择后正确的插入位置

标签 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);
            }
        });

    }

最佳答案

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();

关于java - 替换 JTextField 中的文本选择后正确的插入位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362164/

相关文章:

java - 当组更改时如何更改细节带颜色?

java - 如何解析不规则使用引号的 CSV 文件?

java - 为什么我不应该在添加组件之前调用 setVisible(true)?

java - 如何更新放入 JTextField 的文件中的行

java - 创建多个标签并将它们保存在列表中以供显示

java - 从谷歌静态 map 中的像素坐标获取经/纬度

java - 使用正则表达式解析文本

Java 剪贴板粘贴检查器?

java - 使用 JTextField 调整文本

java - 使用 JTextField 和 BoxLayout 设置 Swing 格式