Javaで(JOptionPane.showInputDialog)内(「キャンセル」)ボタンに特定のアクションを割り当てる方法?

StackOverflow https://stackoverflow.com/questions/4608124

質問

ここでは、短いサンプルコードで私の質問があります:

 double num = 0.00;

try
{
    num = Double.parseDouble(JOptionPane.showInputDialog("Enter your num:"));

}

catch (Exception e)
{
    System.err.println("Error: Invalid Input!");
    JOptionPane.showMessageDialog(null, "Error: Invalid Input!",  
    "Error", JOptionPane.ERROR_MESSAGE);
}

//Validate the num

if (num > 0.0 && num <= 1000.00)
{
    functionA();
}

else if (deposit <= 0.0 || deposit > 1000.00)
{
 System.err.println("Error: out of range");
}

*ザ・問題は、上記のコードで、私は「キャンセル」ボタンをクリックすると、プログラムは両方のエラーが当たっているということです。(範囲外と無効な入力を)

私はこの問題を解決することができますどのようにしてください任意の提案ですか?

事前に感謝します。

役に立ちましたか?

解決

まず、あなたが入力がnullであるかどうかを確認する必要があります。ない場合は、それにparseDoubleを使用します。

このように:

try
{
    String i = JOptionPane.showInputDialog("Enter your num:");
    if (i != null)
        num = Double.parseDouble(i);
}

また、あなたがやったように、「例外」を置くことによって、例外をキャッチしないようにしてみてください。常にあなたが可能な限り探している例外を指定してみてください。 この場合は、あなたの代わりにだけ例外のNumberFormatExceptionがを使用する必要があります。

catch (NumberFormatException e)
{
    System.err.println("Error: Invalid Input!");
    JOptionPane.showMessageDialog(null, "Error: Invalid Input!",  
    "Error", JOptionPane.ERROR_MESSAGE);
}

他のヒント

package org.life.java.so.questions;

import java.text.ParseException;
import javax.swing.JOptionPane;

/**
 *
 * @author Jigar
 */
public class InputDialog {

    public static void main(String[] args) throws ParseException {
        String input = JOptionPane.showInputDialog("Enter Input:");
        if(input == null){
            System.out.println("Calcel presed");
        }else{
            System.out.println("OK presed");
        }


    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top