我有一个使用代码初始化的 JFormattedTextField
JFormattedTextField f = new JFormattedTextField(createFormatter());
f.setValue(null);
f.setColumns(1);
f.setEditable(true);
f.setCaretPosition(0);
textField 为 1 列宽,在我的 createFormatter 方法中
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter("#");
formatter.setValidCharacters("123456789");
} catch (java.text.ParseException exc) {
System.err.println("formatter is bad: " + exc.getMessage());
System.exit(-1);
}
return (formatter);
如您所见,我只想在文本字段中输入数字 1-9。这在切换到文本字段时效果很好,但是当我实际单击文本字段进行输入时,光标会发生这种奇怪的事情。
此处光标闪烁空白...
并且光标闪烁黑色。
如您所见,左上角有一个小黑点,光标从左侧移开。我可以突出显示左侧的区域,并且不能再向该文本字段添加任何字符(即使是数字 1-9)。这让我相信,当我用光标关注文本字段时,正在添加一个字符。我不知道这个角色是什么,我不知道如何解决这个问题。
有谁知道如何解决这个问题?
这是一个sscce
public class FormattedTextField {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100, 75);
JPanel content = new JPanel(new FlowLayout());
frame.setContentPane(content);
JFormattedTextField f1 = new JFormattedTextField(createFormatter());
f1.setValue(null);
f1.setColumns(1);
JFormattedTextField f2 = new JFormattedTextField(createFormatter());
f2.setValue(null);
f2.setColumns(1);
content.add(f1);
content.add(f2);
frame.setVisible(true);
}
public static MaskFormatter createFormatter() {
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter("#");
formatter.setValidCharacters("123456789");
} catch (java.text.ParseException exc) {
System.err.println("formatter is bad: " + exc.getMessage());
System.exit(-1);
}
return (formatter);
}
}
在这个例子中,左上角没有一个小黑点,但是当用鼠标聚焦文本字段时,仍然添加了一个空白字符。