2012-01-05 50 views
2

我想添加一个简单的货币转换工具到我的程序,但我打了障碍。有没有简单的方法只允许浮点数作为Java中的JTextField的输入。从我在线阅读的内容来看,使用JFormattedTextField是一个很难使用的问题。我需要创建一个类来做一些过滤吗?如何只允许在Java中的JTextField浮动

+1

不相信你在网上阅读的所有内容:-)它肯定有一个学习曲线,但从头开始更加令人生畏...并且不会被彻底测试 – kleopatra 2012-01-05 09:49:45

回答

2

JFormattedTextField不应该太困难。只需要将格式化程序作为参数传入并且应该自行处理。你可以从java API那里得到这样的区域设置,如下所示:

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

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 
    } 
} 
2

这将是更好地使用JFormattedTextField

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

1

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