如何在Java中只允许JTextField中的浮点数

时间:2012-01-05 03:24:51

标签: java swing validation jtextfield

我正在尝试为我的程序添加一个简单的货币转换器工具,但我遇到了障碍。有一种简单的方法只允许浮点数作为Java中JTextField的输入。从我在网上看到的,使用JFormattedTextField是一件痛苦的事情。我是否需要创建一个类来进行过滤?

4 个答案:

答案 0 :(得分:2)

JFormattedTextField不应该太难以理解。只需要将Formatter作为参数传入,并且应该自己处理。你可以从java API获得它,它将使用像这样的区域设置:

new JFormattedTextField(java.text.NumberFormat.getCurrencyInstance());

答案 1 :(得分:2)

最好使用JFormattedTextField

  

格式化文本字段为开发人员提供了一种指定可在文本字段中键入的有效字符集的方法。具体来说,JFormattedTextField类将格式化程序和对象值添加到从JTextField类继承的功能。格式化程序将字段的值转换为它显示的文本,将文本转换为字段的值。 See examples.

答案 2 :(得分:1)

您可以使用JFormattedTextField,但它会带来非常糟糕的用户体验。最好在输入时丢弃不适当的字符。 DocumentFilter提供了一个相对(用于Swing)干净的方式来执行此操作。几年前,我用sourceblog decription写了一个简单的例子。

答案 3 :(得分:0)

我同意vcetinick,因为JFormattedTextField对格式化文本输入很有用。

但是,如果要验证在JTextField中输入的值,您可能需要自己实现ActionListener:

public void actionPerformed(ActionEvent evt) {
    JTextField textfield = (JTextField)evt.getSource();
    String strTextValue = textfield.getText();
    try {
        if (strTextValue.equals("")) {
           // Handle empty string
        } else {
           double dValue = Double.parseDouble(strTextValue);
           // Handle valid value
        }
    } catch (Exception e) {
        // Handle invalid value
    }
}
相关问题