我希望使用以下方法替换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);
}
});
}
答案 0 :(得分:5)
我在JTextField中选择了多个字符,插入符号位置向前跳过。
final int caretPosition = inputTextField.getCaretPosition();
通常,当您选择从左到右选择的文本时,插入位置位于您要替换的文本的末尾。
我认为你应该使用:
final int caretPosition = inputTextField.getSelectionStart();