2016-02-06 3 views
0

Это код, я использую, чтобы обработать ввод целого числа:StringUtils.isNumeric блоки JOptionPane отменить опцию

public static int getIntInput(String message) { 
    String numberStr = JOptionPane.showInputDialog(message); 
    while (!StringUtils.isNumeric(numberStr) || Integer.parseInt(numberStr) == 0) { 
     numberStr = JOptionPane.showInputDialog(message); 
    } 
    return Integer.parseInt(numberStr); 
} 

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

Как правильно закрыть окно JOptionPane при нажатии кнопки отмены или закрытия?

+0

заменить 'while' на' if' –

+0

@ Саша Салауу не очень умное решение, потому что я действительно хочу, чтобы окно отображалось до тех пор, пока пользователь не вводит действительное целое число. Я просто хочу иметь возможность закрыть окно> завершить программу. –

+1

, в чем же проблема? 'showInputDialog()' возвращает, когда какой-либо ввод отправляется пользователем, а затем вы его проверяете. Если значение недействительно, верните что-то другое, кроме входного значения - null или значение, указывающее неправильный ввод, e. г. -1 –

ответ

0
while (!StringUtils.isNumeric(numberStr) || Integer.parseInt(numberStr) == 0) { 

     if (numberStr == null) { 
      return 0; 
     } 
     else { 
      numberStr = JOptionPane.showInputDialog(message); 
     } 
} 

Это трюк.