2012-01-05 4 views
2

プログラムに単純な通貨変換ツールを追加しようとしていますが、障壁に当たっています。浮動小数点数をJavaのJTextFieldへの入力としてのみ許可する簡単な方法はありますか?私がオンラインで読んだことから、JFormattedTextFieldを使用することは使用する苦痛です。いくつかのフィルタリングを行うためにクラスを作成する必要がありますか?JavaのJTextFieldで浮動小数点数を許可する方法

+1

あなたはオンラインで読むことすべてを信じていません:-)それは確かに学習曲線を持っていますが、それを最初からやっていくことはさらに厄介です...そして完全にテストされません – kleopatra

答えて

2

JFormattedTextFieldはあまりにも難しいはずがありません。 Formatterをパラメータとして渡すだけで、それ自体を処理する必要があります。あなたはそのような地域設定を使用するJava APIからそれを得ることができます:

新しいJFormattedTextField(java.text.NumberFormat.getCurrencyInstance());

0

JFormattedTextFieldはテキスト入力の書式設定に便利なので、私はvcetinickに同意します。

あなたは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という簡単な例を書いた。

関連する問題