java如何在JTextField中移动光标位置
我有一个JTextField inputTextField
,我想在按下orButton
时,将符号∨
添加到光标位置的文本字段中。下面的方法可以工作,但按下按钮后,光标会出现在字段的末尾,而不是按钮按下前的位置
如何将光标设置为移回其以前的位置
private void orButtonActionPerformed(java.awt.event.ActionEvent evt)
{
int caretPosition = inputTextField.getCaretPosition();
String currentText = inputTextField.getText();
String newText = currentText.substring(0, caretPosition) +
"∨" + currentText.substring(caretPosition, currentText.length());
inputTextField.setText(newText);
inputTextField.requestFocus();
}
我想setCaretPosition()
可能是我想要的,但它没有起作用
# 1 楼答案
重置插入符号位置的是
setText()
,而不是获得焦点的字段。如果你把setCaretPosition()
放在setText()
和requestFocus()
之间,它应该可以工作这是一个有效的例子:
# 2 楼答案
setCaretPosition按预期工作。您需要在调用requestFocus方法之前或之后调用它。工作示例如下所示:
# 3 楼答案
setCaretPosition()
应该是正确的方法。然而,当文本字段获得焦点时,插入符号似乎又被设置为0
。您可以尝试将其包装在SwingUtilities.invokeLater()
调用中,如下所示:请注意,您必须将
caretPosition
声明为最终版本,这样才能工作