java - Action 监听器

标签 java swing actionlistener jradiobutton

以下代码是项目的操作监听器。基本上,我有 4 个单选按钮,当我单击其中一个时,我希望它更改屏幕上的变量。当我运行代码时,它只是将所有值加在一起。还有其他方法可以做到这一点吗?

class Calc implements ActionListener
    {
     public void actionPerformed(ActionEvent event)
     {
       double base = 0.00;
       double options;
       double total;

      if (Button25.isSelected());
      {
      base = base + 999.99;
      String base2 = Double.toString(base);
      lblBaseAns.setText(base2);
      }

      if (Button32.isSelected());
      {
        base = base + 1049.99;
        String base2 = Double.toString(base);
        lblBaseAns.setText(base2);
      }

      if (Button35.isSelected());
      {
        base = base + 1099.99;
        String base2 = Double.toString(base);
        lblBaseAns.setText(base2);
      }

      if (Button42.isSelected());
      {
        base = base + 1155.99;
        String base2 = Double.toString(base);
        lblBaseAns.setText(base2);
      }


     }
    }

最佳答案

问题是,对于每个 if() 语句,例如 if (Button32.isSelected());,您都有一个 ; 符号位于末尾。这个不应该在那里。这是更正后的代码...

class Calc implements ActionListener {
    public void actionPerformed(ActionEvent event){
        double base = 0.00;
        double options;
        double total;

        if (Button25.isSelected()){ // changed
            base = base + 999.99;
            String base2 = Double.toString(base);
            lblBaseAns.setText(base2);
        }
        else if (Button32.isSelected()){ // changed
            base = base + 1049.99;
            String base2 = Double.toString(base);
            lblBaseAns.setText(base2);
        }
        else if (Button35.isSelected()){ // changed
            base = base + 1099.99;
            String base2 = Double.toString(base);
            lblBaseAns.setText(base2);
        }
        else if (Button42.isSelected()){ // changed
            base = base + 1155.99;
            String base2 = Double.toString(base);
            lblBaseAns.setText(base2);
        }
    }
}

作为替代方案,为什么不获取从 ActionEvent 单击的按钮,然后在 if-else 分支中使用该按钮...

class Calc implements ActionListener {
    public void actionPerformed(ActionEvent event){
        double base = 0.00;
        double options;
        double total;

        Object clickedObject = event.getSource();
        if (clickedObject instanceof JRadioButton){
            JRadioButton clickedButton = (JRadioButton)clickedObject;

            if (clickedButton == Button25){
                base = base + 999.99;
                String base2 = Double.toString(base);
                lblBaseAns.setText(base2);
            }
            else if (clickedButton == Button32){
                base = base + 1049.99;
                String base2 = Double.toString(base);
                lblBaseAns.setText(base2);
            }
            else if (clickedButton == Button35){
                base = base + 1099.99;
                String base2 = Double.toString(base);
                lblBaseAns.setText(base2);
            }
            else if (clickedButton == Button42){
                base = base + 1155.99;
                String base2 = Double.toString(base);
                lblBaseAns.setText(base2);
            }
        }
    }
}

关于java - Action 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116590/

相关文章:

java - DefaultTableCellRenderer 内 JTable 中的旧值

java - 两个设置背景和 sleep 线程

java - 在数据表中使用过滤器进行动态计算

java - `gradle install`如何生成 `pom.xml`文件

java - 如何使用 dropbox 下载文件

java - 我如何编写代码来提示 JVM 使用 vector 操作?

java - 运行简单的 Swing 程序时出错

java - 如何将一个 Pane 连接到另一个 Pane

java - 将数据从 MySQL 加载到 JComboBox

java - 如何从 Action 监听器/类构造函数访问变量以在 java 的 main 方法中使用