如果在java中取消选中复选框,如何编码

时间:2018-04-16 08:53:39

标签: java in-app-billing

目前,我正在开发一个java的餐厅管理系统。当我选中一个复选框时,它会为总金额增加金额,我只想知道如果我再次取消选中该复选框,则会再次减去该金额。以下是我的复选框代码

private void jcbWPizzaMouseClicked(java.awt.event.MouseEvent evt) {                                       
    double cMeal = Double.parseDouble(jlblCostOfMeal.getText());
    double WavePizza = Double.parseDouble(jtxtWP.getText());
    double iWavePizza = 350;

        if (jcbWPizza.isSelected()) {
        i[1] = (WavePizza * iWavePizza) + cMeal;
        String pMeal = String.format("%.2f", i[1]);
        jlblCostOfMeal.setText(pMeal);
    }
} 

3 个答案:

答案 0 :(得分:3)

如果您使用JCheckBox,则有boolean isSelected()方法,以便验证是否已选择JCheckBox,您可以尝试:

if (checkbox.isSelected()) {
// selected, do something...
} else {
// un-selected, do something else...
}

答案 1 :(得分:2)

您想要根据所选对象jcbWPizza更改总金额值。您可以将ItemListener添加到复选框

jcbWPizza.addItemListener(new ItemListener() {
 @Override public void itemStateChanged(ItemEvent e) {
  if (e.getStateChange() == ItemEvent.SELECTED) {
   //checkbox has been selected //do selected action... 
  } else {
   //checkbox has been deselected //do deselected action...   
  };
 }
})

答案 2 :(得分:1)

您的问题提出了一些您可能没有想过的问题。

首先,依靠MouseEvent,当复选框由于某些其他原因(例如,通过代码,或者如果用户使用键盘更改选择)更改状态时,您将不会捕获这些时间。添加ItemListener将是更多代方法。

将来可能会有其他一些影响价格的因素。拥有更新隐藏在此复选框侦听器中的价格的代码似乎是错误的方法。更好的是添加一个只调用常规的监听器"更新显示的价格"方法。在该方法中,您可以检查将影响最终价格的每个小部件的状态并进行相应计算。然后,如果复选框被隐藏或被隐藏,则无关紧要,因为每次要求更新时,它都会从头开始计算总数。

最后,请记住Swing不是线程安全的。虽然单个线程会呼叫您的听众,但无法保证只有一个线程会调用您的"重新计算价格"方法。确保如果多个线程同时调用您的代码,您最终不会让您的状态不同步。避免使用"复选框已切换,因此添加或减去"逻辑是一个好主意,因为它增加了需要保持同步的额外状态。