2012-04-12 13 views
1

Der folgende Code ist ein Aktionslistener für ein Projekt. Grundsätzlich habe ich 4 Radiobuttons und wenn ich eins anklicke, möchte ich, dass es eine Variable auf dem Bildschirm ändert. Wenn ich den Code ausführe, fügt er einfach alle Werte zusammen. Gibt es andere Möglichkeiten, dies zu tun?Aktion Listener

class Calc implements ActionListener 
    { 
    public void actionPerformed(ActionEvent event) 
    { 
     double base = 0.00; 
     double options; 
     double total; 

     if (Button25.isSelected()); 
     { 
     base = base + 999.99; 
     String base2 = Double.toString(base); 
     lblBaseAns.setText(base2); 
     } 

     if (Button32.isSelected()); 
     { 
     base = base + 1049.99; 
     String base2 = Double.toString(base); 
     lblBaseAns.setText(base2); 
     } 

     if (Button35.isSelected()); 
     { 
     base = base + 1099.99; 
     String base2 = Double.toString(base); 
     lblBaseAns.setText(base2); 
     } 

     if (Button42.isSelected()); 
     { 
     base = base + 1155.99; 
     String base2 = Double.toString(base); 
     lblBaseAns.setText(base2); 
     } 


    } 
    } 
+0

"* addiert alle Werte *". Wie? – Lion

+0

Ich weiß nicht warum, aber wenn ich eine Aktion ausführe, die den Code auslöst, fügt sie alle Werte von jedem Optionsfeld zusammen und zeigt sie an. – Brandon

+0

Das sollte nicht passieren. Vermutlich vermisst du etwas an der ** Gruppe **. – Lion

Antwort

2

Das Problem ist, dass für jede if() Anweisung, wie if (Button32.isSelected());, haben Sie ein ; Symbol am Ende. Das sollte nicht da sein. Hier ist der korrigierte Code ...

class Calc implements ActionListener { 
    public void actionPerformed(ActionEvent event){ 
     double base = 0.00; 
     double options; 
     double total; 

     if (Button25.isSelected()){ // changed 
      base = base + 999.99; 
      String base2 = Double.toString(base); 
      lblBaseAns.setText(base2); 
     } 
     else if (Button32.isSelected()){ // changed 
      base = base + 1049.99; 
      String base2 = Double.toString(base); 
      lblBaseAns.setText(base2); 
     } 
     else if (Button35.isSelected()){ // changed 
      base = base + 1099.99; 
      String base2 = Double.toString(base); 
      lblBaseAns.setText(base2); 
     } 
     else if (Button42.isSelected()){ // changed 
      base = base + 1155.99; 
      String base2 = Double.toString(base); 
      lblBaseAns.setText(base2); 
     } 
    } 
} 

Als Alternative, warum Sie nicht die Taste erhalten, die von den ActionEvent geklickt wurde, und verwenden Sie dann den Knopf in Ihrem if-else-Zweig ...

class Calc implements ActionListener { 
    public void actionPerformed(ActionEvent event){ 
     double base = 0.00; 
     double options; 
     double total; 

     Object clickedObject = event.getSource(); 
     if (clickedObject instanceof JRadioButton){ 
      JRadioButton clickedButton = (JRadioButton)clickedObject; 

      if (clickedButton == Button25){ 
       base = base + 999.99; 
       String base2 = Double.toString(base); 
       lblBaseAns.setText(base2); 
      } 
      else if (clickedButton == Button32){ 
       base = base + 1049.99; 
       String base2 = Double.toString(base); 
       lblBaseAns.setText(base2); 
      } 
      else if (clickedButton == Button35){ 
       base = base + 1099.99; 
       String base2 = Double.toString(base); 
       lblBaseAns.setText(base2); 
      } 
      else if (clickedButton == Button42){ 
       base = base + 1155.99; 
       String base2 = Double.toString(base); 
       lblBaseAns.setText(base2); 
      } 
     } 
    } 
} 
+0

Ich habe das gar nicht bemerkt; Error. Sobald ich das behoben hatte, löste ich das Problem. Vielen Dank! – Brandon

+0

Ich habe es auch nicht bemerkt, bis ich meinen Codevorschlag geschrieben habe. – wattostudios