2016-12-26 11 views
0

В диалоговом окне ввода отображается текущий запас для элемента. Я хочу, чтобы пользователь вводил новые холдинги для элемента через целое число.Как я могу правильно обработать окно ввода?

Если пользователь закрывает или отменяет диалоговое окно ввода WHILST, также не имеющее ничего внутри текстового поля ввода, я хочу вернуться в главное меню. Это также произойдет, даже если пользователь имеет что-то во входном текстовом поле.

Если пользователь вводит строку, исключение с числовым форматом будет уловлено, и пользователю будет предложено ввести только номер.

Если вход пуст, и пользователь нажимает кнопку «ОК», появится диалоговое окно с сообщением и скажет пользователю, что вам нужно будет ввести номер.

В настоящее время мне очень сложно реализовать эти методы в моем диалоговом окне ввода.

Вот мой код:

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

Почему вы сравнивая результат в диалоге с 'JOptionPane.CLOSED_OPTION'? Вы также можете проверить, является ли String числом, не опуская его, и тем самым обойти проблематичное 'NumberFormatException'. См. Http://stackoverflow.com/questions/1102891/how-to-check-if-a-string-is-numeric-in-java – hotzst

+0

Я не уверен, как обращаться, если пользователь нажимает кнопки закрытия. Я везде искал и не могу найти решение. Я пойму решение для целочисленной обработки, хотя, спасибо за это. У меня также есть два JOptionPanes, и я только хочу закрыть одно открытое в то время. – juiceb0xk

ответ

0

Вы можете сделать с этим:

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

Он по-прежнему бросает исключение нулевого указателя, когда я закрываю диалоговое окно ввода. – juiceb0xk

+0

при закрытии диалогового окна ввода, он перейдет к первому 'if' – Jerry06