替换 JTextField 中的文本选择后正确的插入位置
Correct caret position after replacing a selection of text in a JTextField
我想要下面的方法来替换 JTextField
中的 selection 文本,并将其替换为一些输入 String
。我的问题是,如果我 select 超过 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();
通常,当您 select 发短信时 select 从左到右,因此插入符号位置位于要替换的文本的末尾。
我认为你应该使用:
final int caretPosition = inputTextField.getSelectionStart();
我想要下面的方法来替换 JTextField
中的 selection 文本,并将其替换为一些输入 String
。我的问题是,如果我 select 超过 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();
通常,当您 select 发短信时 select 从左到右,因此插入符号位置位于要替换的文本的末尾。
我认为你应该使用:
final int caretPosition = inputTextField.getSelectionStart();