我看到过有关使用 Robot 类通过 x 和 y 坐标移动光标的问题,但我正在尝试找出如何在 JTextField 中的文本之间重新定位光标。
我有一个左括号按钮,单击该按钮将获取 JTextField 中可能存在的任何文本,将“(”连接到它并将其设置为 JTextField。
我想知道如何添加右括号,但将光标放在两者之间,以便用户可以不间断地继续输入。有什么建议吗?
最佳答案
如果您想将 JTextField 中的插入符从按钮移动到特定位置,那么一种方法是首先使用 JTextField.requestFocus() 方法将焦点设置在其上,然后您需要使用 JTextField.setCaretPosition() 方法来实际重新定位插入符。
如果您有一个名为 jTextField1 的 JTextField 并且您想要将插入符移动到其中包含的文本末尾,那么您可以使用:
jTextField1.requestFocus(); //
jTextField1.setCaretPosition(jTextField1.getText().length());
您需要小心,不要超过 JTextField 中文本的长度,否则将会出现 IllegalArgumentException,您可以通过将其括起来捕获上面的代码位于 try/catch block 中。您还需要考虑 JTextField 中可能没有任何文本的情况。
try {
jTextField1.requestFocus();
jTextField1.setCaretPosition(jTextField1.getText().length());
}
catch (IllegalArgumentException ex) {
///Do Something Here...
}
要将括号附加到 JTextField 的末尾,然后将插入符放在它们之间,如下所示:
String txt = jTextField1.getText(); // Get the text contained in Textfield (if any)
if (txt.equals("")) { txt+= "()"; } // Nothing for text so just add Parenthases
else { txt+= " ()"; } // Some text there so add a space and Parenthases
jTextField1.setText(txt);
try {
// Set focus to JTextField
jTextField1.requestFocus();
// Move the caret between the Parenthases
jTextField1.setCaretPosition(jTextField1.getText().length()-1);
}
catch (IllegalArgumentException ex) {
// Do something here...
}
关于Java 在 JTextField 中移动光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42619193/