2013-04-14 2 views
1

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

Это мой слушатель, который имеет дело с тем, когда установлены флажки, а другой - для вычисления общего количества.

private class SelectionListener implements ActionListener { 

    @Override 
    public void actionPerformed(ActionEvent event) { 
     if (edamame.isSelected()) { 
      total1 = total1 + 4.99; 
     } else if (calamari.isSelected()) { 
      total1 = total1 + 8.99; 
     } else if (shrimpTempura.isSelected()) { 
      total1 = total1 + 8.99; 
     } else if (tempuraCombo.isSelected()) { 
      total1 = total1 + 9.99; 
     } else if (gyoza.isSelected()) { 
      total1 = total1 + 3.99; 
     } else if (pepsi.isSelected()) { 
      total2 = total2 + 2.99; 
     } else if (sprite.isSelected()) { 
      total2 = total2 + 2.99; 
     } else if (mtDew.isSelected()) { 
      total2 = total2 + 2.99; 
     } else if (drPepper.isSelected()) { 
      total2 = total2 + 2.99; 
     } else if (budlight.isSelected()) { 
      total2 = total2 + 4.99; 
     } else if (budweiser.isSelected()) { 
      total2 = total2 + 4.99; 
     } else if (playboy.isSelected()) { 
      total3 = total3 + 12.99; 
     } else if (california.isSelected()) { 
      total3 = total3 + 3.99; 
     } else if (volcano.isSelected()) { 
      total3 = total3 + 13.99; 
     } else if (goldenCali.isSelected()) { 
      total3 = total3 + 7.99; 
     } else if (shrimpTemp.isSelected()) { 
      total3 = total3 + 6.99; 
     } else if (tunaR.isSelected()) { 
      total3 = total3 + 5.99; 
     } else if (avocadoR.isSelected()) { 
      total3 = total3 + 4.99; 
     } else if (spicyCaliR.isSelected()) { 
      total3 = total3 + 5.99; 
     } else if (salmonR.isSelected()) { 
      total3 = total3 + 5.99; 
     } else if (crab.isSelected()) { 
      total4 = total4 + 3.99; 
     } else if (salmon.isSelected()) { 
      total4 = total4 + 3.99; 
     } else if (tuna.isSelected()) { 
      total4 = total4 + 3.99; 
     } else if (whiteT.isSelected()) { 
      total4 = total4 + 3.99; 
     } else if (eel.isSelected()) { 
      total4 = total4 + 3.99; 
     } else if (crabstick.isSelected()) { 
      total4 = total4 + 3.99; 
     } else if (lobster.isSelected()) { 
      total4 = total4 + 3.99; 
     } else if (bulgogi.isSelected()) { 
      total5 = total5 + 18.99; 
     } else if (kimchiJi.isSelected()) { 
      total5 = total5 + 12.99; 
     } else if (kalbee.isSelected()) { 
      total5 = total5 + 24.99; 
     } else if (soonTofu.isSelected()) { 
      total5 = total5 + 11.99; 
     } else if (bimbimap.isSelected()) { 
      total5 = total5 + 10.99; 
     } else if (dolSot.isSelected()) { 
      total5 = total5 + 12.99; 
     } else if (dukMan.isSelected()) { 
      total5 = total5 + 13.99; 
     } else if (nakJi.isSelected()) { 
      total5 = total5 + 16.99; 
     } else if (tempuraU.isSelected()) { 
      total5 = total5 + 12.99; 
     } else if (nabeyaki.isSelected()) { 
      total5 = total5 + 13.99; 
     } else if (kalbeeTang.isSelected()) { 
      total5 = total5 + 14.99; 
     } 
    } 
} 


private class TotalListener implements ActionListener { 

    @Override 
    public void actionPerformed(ActionEvent event) { 
     NumberFormat desiredlook = NumberFormat.getCurrencyInstance(); 
     desiredlook.setMaximumFractionDigits(2); 
     desiredlook.setMinimumFractionDigits(2); 
     name = getName.getText(); 
     total = (total1 + total2 + total3 + total4 + total5) * 1.065; 
     labelTotal.setText(name + " your total is " 
       + desiredlook.format(total)); 

    } 
} 

ответ

0

Ваш SelectionListener будет означать, что один слушатель используется для каждого JCheckBox. Это создает проблему действия клика из каждого флажка, зависящего от кросс-зависимого, и его трудно управлять.

Чтобы избежать этой кросс-зависимости, вы можете создать отдельную ActionListeners для каждого компонента. Интерфейс Action может использоваться для создания нескольких конкретных действий, посредством которых добавляемый сумма может быть передан в конструктор его реализации. Например

class SelectionListener extends AbstractAction { 

    private final double amount; 
    public SelectionListener(double amount) { 
     this.amount = amount; 
    } 

    @Override 
    public void actionPerformed(ActionEvent event) { 
     JCheckBox checkBox = (JCheckBox)event.getSource(); 
     if (checkBox.isSelected()) { 
      total1 += amount; 
     } 
    } 
} 
+0

Большое вам спасибо! – caustr01

0

Попробуйте это Java-код:

YourCheckBox.setSelected (boolean isSelected); 
Смежные вопросы