在 java 中,我正在尝试制作简单的货币转换器,但为此我需要一个文本字段,它可以将输入限制为仅数字,更重要的是双数字。我尝试使用JFormatedTextField
,但它仅在您完成输入并单击其他位置后格式化输入,但我需要限制 TextField在输入时使用()每个无效字符。
可能的尝试:
使用JFormatedTextField
:
JFormatedTextField textField = new JFormatedTextField(new DoubleFormat());
textField.setBounds(190, 49, 146, 33);
frame.getContentPane().add(textField);
textField.setColumns(10);
使用KeyTyped Event
:
char c = arg0.getKeyChar();
if(!(Character.isDigit(c) || c == KeyEvent.VK_BACK_SPACE || c== KeyEvent.VK_DELETE)){
arg0.consume();
}
与正则表达式一起使用KeyTyped Event
:
if(!((textField.getText().toString+arg0.getKeyChar()).matches("[0-9]*(.[0-9]*)?"))){
arg0.consume();
}
第二次和第三次尝试很接近,但第二次尝试在点值上失败,第三次尝试总是读取 textField 上的第一个字符,不管它是什么,所以有什么建议吗?我不是很喜欢 JAVA GUI,所以请耐心等待。