2016-12-26 8 views
0

入力ダイアログには、アイテムの現在の在庫が表示されます。私は、ユーザーが整数を介してアイテムの新しい保持を入力したい。入力ダイアログを正しく処理するにはどうしたらいいですか?

ユーザが入力テキストフィールド内に何も持たない入力ダイアログWHILSTを閉じたりキャンセルしたりすると、メインメニューに戻ります。これは、ユーザーが入力テキストフィールドに何かを持っていても発生します。

ユーザーが文字列を入力すると、数値書式例外が検出され、ユーザーは数字だけを入力するよう求められます。

入力が空で、ユーザーが[OK]をクリックすると、番号を入力する必要があることを示すメッセージダイアログが表示されます。

現在のところ、これらのメソッドを入力ダイアログに実装することは非常に困難です。テキストフィールドが空で、ユーザーが閉じるのいずれか赤い十字またはキャンセルボタンを

int newInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Your current holdings are: " 
      + currentHoldings, "Edit Holdings", JOptionPane.CANCEL_OPTION)); 

        //Currently, when closing the program if newInput is empty 
        //It goes straight to the number format exception 
        //I need the program closed if the user closes it. 
        if (newInput == JOptionPane.CLOSED_OPTION) 
        { 
         JOptionPane.getRootFrame().dispose(); 
         break; 
        } 

        ... 

        catch (NumberFormatException nfe) 
        { 
         JOptionPane.showMessageDialog(null, "Please enter in a number!"); 
        } 

場合であっても、番号形式の例外がまだスロー:

は、ここに私のコードです。私はテキストフィールドの中に何もない場合でもプログラムを終了したい。

ユーザーが入力ダイアログのテキストフィールドに何かを入力したかどうかを確認するにはどうすればよいですか?私は現在、この機能も実装するのが難しいと思っています。

私の質問は、ユーザーの入力が空であるか入力ダイアログを閉じた場合に、終了ダイアログを処理するための入力ダイアログをうまく管理できますか。

ありがとうございました。

+0

?また、Stringが文字列であるかどうかを調べることができます。文字列が偽ではない場合、問題の 'NumberFormatException'を回避することができます。 http://stackoverflow.com/questions/1102891/how-to-check-if-a-string-is-numeric-in-java – hotzst

+0

ユーザーが閉じるボタンをクリックした場合の対処方法がわかりません。私はどこにでもいて、解決策を見つけることができません。私は整数の処理のための解決策をチェックしますが、そのためにありがとう。 私はまた2つのJOptionPanesを実行していますが、その時点で開いているJOptionPaneを閉じたいだけです。 – juiceb0xk

答えて

0

あなたはこれを行うことができます:なぜあなたは `JOptionPane.CLOSED_OPTION`との対話から、結果を比較している

String code = JOptionPane.showInputDialog(null, "Your current holdings are: " 
      + currentHoldings, "Edit Holdings", JOptionPane.CANCEL_OPTION); 

    if (code == null){ //cancel button or "x" button 

    } 
    else if ("".equals(code)){ //don't input anything and click ok 

    } 
    else { 
     //parse code to int and do what you want 

    } 
+0

入力ダイアログを閉じると、まだnullポインタ例外がスローされています。 – juiceb0xk

+0

入力ダイアログを閉じると、最初の 'if' – Jerry06

関連する問題