gpt4 book ai didi

java - 提交后如何取消所有复选框?

转载 作者:行者123 更新时间:2023-12-01 04:44:59 25 4
gpt4 key购买 nike

在我的程序中,我正在创建一个菜单,您可以在其中选择不同的菜肴。问题是,如果他们取消选择某些内容,它仍然会添加到总数中,并且在提交他们的选择后,我必须重新运行程序才能选择新的选择。我该如何做到当他们取消选中它时,它仍然不会被添加并在提交后刷新菜单?

这是我的监听器,用于处理何时选择复选框,另一个用于计算总数。

 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));

}
}

最佳答案

您的 SelectionListener 将指示每个 JCheckBox 使用一个监听器。这会产生每个复选框的单击操作相互依赖且难以管理的问题。

为了避免这种交叉依赖,您可以为每个组件创建单独的 ActionListenerAction接口(interface)可用于创建多个具体操作,其中要添加的金额可以传递到其实现的构造函数中。例如

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;
}
}
}

关于java - 提交后如何取消所有复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16001838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com