【问题标题】:How to code if a checkbox is unchecked in java如果在java中未选中复选框,如何编码
【发布时间】:2018-04-16 08:53:39
【问题描述】:

目前,我正在用 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);
    }
} 

【问题讨论】:

    标签: java in-app-billing


    【解决方案1】:

    如果您使用JCheckBox,则有一个方法boolean isSelected(),因此您可以尝试验证是否选择了JCheckBox

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

    【讨论】:

      【解决方案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...   
        };
       }
      })
      

      【讨论】:

        【解决方案3】:

        您的问题提出了许多您可能没有考虑过的问题。

        首先,通过依赖 MouseEvent,您不会捕获由于其他原因(例如,通过代码或用户使用键盘更改选择)而导致复选框更改状态的那些时间。添加 ItemListener 将是一种生成更多的方法。

        将来,可能还有许多其他因素会影响价格。将更新价格的代码隐藏在此复选框侦听器中似乎是错误的方法。更好的是添加一个只调用通用“更新显示价格”方法的侦听器。在该方法中,您可以检查会影响最终价格的每个小部件的状态并进行相应的计算。复选框是否隐藏并不重要,因为每次要求更新时,它都会从头开始计算总数。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-30
          • 2012-11-20
          • 1970-01-01
          • 1970-01-01
          • 2021-09-18
          • 2021-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多