2016-07-17 2 views
0

У меня есть этот фрагмент кода на JOptionPane. Я хотел открыть другой фрейм, когда нажата кнопка «Да», и закройте кадр, когда нажата кнопка «Нет» или «Отмена».JOptionPane close frame on No button

Прежде чем я установил случай 1 и случай 2 в System.exit (0); случай 0 работает отлично, потому что он успешно открывает другой кадр. Но когда я ставлю system.exit на оба случая 1 и 2, когда нажата кнопка «Да», она все равно закрывает фрейм.

int test = JOptionPane.showConfirmDialog(null, "You lost! Play again?"); 

     switch(test) { 
      case 0: RPS rps = new RPS(); 
         rps.setVisible(true); 
         this.dispose(); //Yes option 
      case 1: System.exit(0); //No option 
      case 2: System.exit(0); //Cancel option 
      } 

Что я сделал не так?

+1

'break' заявление отсутствует – Reimeus

ответ

1

Вы забыли указать в своем коде break.

После редактирования, ваш код может выглядеть следующим образом:

int test = JOptionPane.showConfirmDialog(null, "You lost! Play again?"); 
switch(test) { 
case 0: RPS rps = new RPS(); 
     rps.setVisible(true); 
     this.dispose(); // Yes option 
     break; 
case 1: System.exit(0); // No option 
case 2: System.exit(0); // Cancel option 
} 

лучше использовать константы, предоставляемые JOptionPane, следующим образом:

int test = JOptionPane.showConfirmDialog(null, "You lost! Play again?"); 
switch(test) { 
case YES_OPTION: RPS rps = new RPS(); 
       rps.setVisible(true); 
       this.dispose(); // Yes option 
       break; 
case NO_OPTION: System.exit(0); // No option 
case CANCEL_OPTION: System.exit(0); // Cancel option 
}