2017-03-27 6 views
1

私はJTextFieldで入力の検証を調べましたが、入力がstring,integerまたはdigitのいずれであるかを確認することしかできません。誰も私が数字の特定の価値をどのように検証できるかを提案できますか?例えば、それが0.5 - 1の範囲内にあるかどうか。ありがとうございました。これを行うにはJTextFieldに値0.5-1が含まれているかどうかを確認しますか?

+1

は[JFormattedTextFieldに](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFormattedTexを見てみましょうtField.html)、この[site](http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html)は、その使用方法の説明に役立ちます。 –

+0

ありがとう、この1つ私を願って私を願う – Mapet

+2

'SpinnerModelモデル=新しいSpinnerNumberModel(.5、.5、1、.01); JSpinner numberRange = new JSpinner(model); ' –

答えて

0

一つの方法は、モジュロ1は、これがtrueの場合、値は整数である0に等しいならば、あなたは確認することができ、この

float tfValue = Float.parseFloat(jTextField1.getText()); 

のようなフロートにテキストフィールドのあなたの価値を解析することであろう。

if (tfValue % 1 == 0) { 
     System.out.println("is an integer"); 
    } 
    else System.out.println("is a float"); 
+0

' JTextField.getText() 'から返された' String'に数値の数字以外が含まれている場合、解析は 'NumberFormatException'を返します。この方法にアプローチする場合は、解析する前にRegExを使用する必要があります。 –

0

多分それはあなたのため

   JTextField field = new JTextField(); 
       field.addKeyListener(new java.awt.event.KeyAdapter() { 

        public void keyTyped(java.awt.event.KeyEvent evt) { 
         String text = ((JTextField)evt.getSource()).getText(); 
         if (!(evt.getKeyChar() >= '0' && evt.getKeyChar() <= '9')) { 
          // it is number 
         } 
         else if (!(evt.getKeyChar() >= 'a' && evt.getKeyChar() <= 'Z')) { 
          // it is char a-Z 
         } 
         else { 
          // it others 
         } 
        } 
       }); 

ヘルプだが数字のための最善の方法は、

+0

一般的に、テキストコンポーネントではなく、基礎となるドキュメントに生のキー/マウスイベントを聞きます。 –

+0

@Abihabi 87ユーザーが0.5と1の間で何らかのバリデーションをする必要があります。それ以外の場合は入力してください。 – Mapet

2

2つの方法specifedマスクでJFormattedTextFieldを使用している、これを試してみてください。

の内容を解析JTextFieldをdouble変数に変換し、単純なif文を使用します。 可能なNumberFormatExceptionを処理するには、try catchブロックを使用する必要があります(テキストをdoubleに変換できない場合)。

例:

double value = 0; 
try { 
    value = Double.parseDouble (yourTextField.getText()); 
} 
catch (NumberFormatException e) { 
    // Handle exception ... 
} 
if (value >= 0.5 && value <= 1) { 
    // ... 
} 
else { 
    // ... 
} 

また、あなたのテキストが与えられた(スマート)正規表現に一致するかどうかをチェックすることができます。

(1(\ .0 *)?| 0?\。[5-9] [0-9] *)

次のパターンを考慮してください(ドットやその他の特殊文字をエスケープするには2つのバックスラッシュが必要です)

このパターン(java.util.regex.Patternを使用して)1(又は小数セパレータとゼロの発生の任意の数、続いて1)、または0.5の間の数(この正規表現ができる」0.5" )と0.99999 ...

例を受け付けます。

System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.4")); // -> false 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0..5")); // -> false 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.111")); // -> false 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5")); // -> true 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5000543")); // -> true 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.50+")); // -> false 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0")); // -> true 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0000")); // -> true 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1")); // -> true 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "21")); // -> false 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".56256")); // -> true 
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".46256")); // -> false 
+0

よろしくお願いいたします。 – Mapet

+0

@Mapet私はうれしいですそれを聞きます。私の答えを受け入れることを検討してください:) – Ansharja

関連する問題