我正在尝试创建一种方法,该方法仅允许我在文本字段中键入一个数字,但是当前的代码无效。即使触发了KeyPressed方法,它也允许我键入字母。但是,仅将输入限制为1个字符的代码有效。
void formatTextField(JTextField field)
{
field.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
if (field.getText().length() >= 1)
{
e.consume();
}
}
public void keyPressed(KeyEvent e)
{
try
{
String keyText = KeyEvent.getKeyText(e.getKeyCode());
Integer.parseInt(keyText);
}
catch(NumberFormatException | NullPointerException ex)
{
e.consume();
}
}
});
}
JSpinner
更加用户友好,因为用户能够识别出该字段仅接受数字。[如果您坚持使用JTextField
,我建议您采用DocumentFilter方法,主要在this question.中进行介绍