2012-01-05 49 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