2013-04-14 44 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一个听众。这会产生一个问题,即每个复选框都是交叉相关的,并且难以管理。

为了避免这种交叉依赖性,您可以为每个组件创建单独的ActionListenersAction接口可用于创建多个具体操作,从而可以将添加的元素传递到其实现的构造函数中。例如

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); 
相关问题