2013-04-14 46 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); 
相關問題