2016-07-17 25 views
0

Ich habe dieses Code-Snippet auf einem JOptionPane. Ich wollte einen anderen Rahmen öffnen, wenn die Schaltfläche Ja geklickt wurde, und den Rahmen schließen, wenn auf Nein oder Abbrechen geklickt wurde.JOptionPane close frame on Keine Taste

Bevor ich Fall 1 und Fall 2 auf System.exit (0) setze; Der Fall 0 funktioniert einwandfrei, weil er erfolgreich einen anderen Frame öffnet. Aber wenn ich system.exit sowohl auf den ersten als auch auf den zweiten Fall setze, wenn der Ja-Knopf gedrückt wird, schließt es immer noch den Rahmen.

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 
      } 

Was habe ich falsch gemacht?

+1

'break' Anweisung fehlt – Reimeus

Antwort

1

Sie haben vergessen, break Anweisungen in Ihrem Code zu setzen.

Nach dem bearbeiten, könnte Ihr Code wie folgt aussehen:

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 
} 

Es ist besser, dass Sie Konstanten durch die JOptionPane bereitgestellt verwenden, wie folgt:

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 
}