Gen*_*tok 8 java swing number-formatting jformattedtextfield
我有JFormattedTextField
一个NumberFormat
与Locale.US.因此小数点分隔符是点,分组分隔符是逗号.
现在,我在此文本字段中键入字符串"1,23",并将焦点移动到另一个组件.我希望字符串消失(就像我输入"a"而不是"1,23"时那样),因为在使用Locale.US时它显然不是数字的有效表示.但相反,文本字段中的文本更改为"123".
这是因为NumberFormat
解析时使用的并不严格,只是忽略逗号.
问题:如何在这种情况下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);
Run Code Online (Sandbox Code Playgroud)
将焦点从文本字段移动到按钮,文本将更改为"123".
我建议您使用正则表达式并使用 match 函数,如下所示:
matches("\\d+([.,])?")
Run Code Online (Sandbox Code Playgroud)
另外,如果您将使用Integer.parseInt(String)
它将抛出异常,如果它将被解析或者您可以使用Double.parseDouble(value)
归档时间: |
|
查看次数: |
224 次 |
最近记录: |