我有一个JFormattedTextField
with a NumberFormat
与 Locale.US。因此小数点分隔符是点,分组分隔符是逗号。
现在,我在此文本字段中键入字符串“1,23”,并将焦点移至另一个组件。我希望该字符串会消失(就像我输入“a”而不是“1,23”时一样),因为在使用 Locale.US 时它显然不是数字的有效表示形式。但文本字段中的文本更改为“123”。
这是因为使用了NumberFormat
解析时并不严格,只是忽略逗号。
Question: 我怎么知道NumberFormat
扔一个ParseException
在这种情况下,将焦点移动到另一个组件后文本字段将为空?
测试代码:
JDialog dialog = new JDialog();
JPanel panel = new JPanel(new BorderLayout());
dialog.getContentPane().add(panel);
NumberFormat nf = NumberFormat.getInstance(Locale.US);
JFormattedTextField textField = new JFormattedTextField(nf);
textField.setText("1,23");
panel.add(textField, BorderLayout.CENTER);
panel.add(new JButton("focus"), BorderLayout.EAST);
dialog.pack();
dialog.setVisible(true);
将焦点从文本字段移至按钮,文本将更改为“123”。
我建议您使用正则表达式并使用这样的匹配函数:
matches("\\d+([.,])?")
另外如果你会使用Integer.parseInt(String)
如果它将被解析或者您可以使用,则会抛出异常Double.parseDouble(value)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)