Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有动作侦听器的单选按钮_Java_Swing_User Interface_Radio Button_Actionlistener - Fatal编程技术网

Java 带有动作侦听器的单选按钮

Java 带有动作侦听器的单选按钮,java,swing,user-interface,radio-button,actionlistener,Java,Swing,User Interface,Radio Button,Actionlistener,该程序允许用户通过从三组单选按钮中选择“设计”房屋,并显示最新信息(每次更改时刷新)在同一个窗口中显示房子的总成本,但除了0.0美元或空值之外,我似乎无法获得实际显示任何东西的成本,我非常确定问题在于我使用动作监听器的方式。如果您能帮助解决此问题,我们将不胜感激 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package jmynewhome

该程序允许用户通过从三组单选按钮中选择“设计”房屋,并显示最新信息(每次更改时刷新)在同一个窗口中显示房子的总成本,但除了0.0美元或空值之外,我似乎无法获得实际显示任何东西的成本,我非常确定问题在于我使用动作监听器的方式。如果您能帮助解决此问题,我们将不胜感激

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jmynewhome;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
 *
 * @author Peter
 */
public class JMyNewHome extends JFrame{
private JPanel panel;
private double cost1;
private double cost2;
private double cost3;
private JLabel messageLabel;
private JRadioButton aspen;
private JRadioButton brittany;
private JRadioButton colonial;
private JRadioButton dartmoor;
private ButtonGroup house;
private JRadioButton bedroom2;
private JRadioButton bedroom3;
private JRadioButton bedroom4;
private ButtonGroup bedroom;
private JRadioButton noGarage;
private JRadioButton garage1;
private JRadioButton garage2;
private JRadioButton garage3;
private ButtonGroup garage;
private String total;

    public JMyNewHome() {
        setTitle("My new home");
        setSize(500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      messageLabel = new JLabel("$"+ total);
        buildPanel();
        add(panel);

        setVisible(true);

    }


    private void buildPanel()
    {


        aspen = new JRadioButton("Aspen");
        brittany = new JRadioButton("Brittany", true);
        colonial = new JRadioButton("Colonial");
        dartmoor = new JRadioButton("Dartmoor");
        bedroom2 = new JRadioButton("2 bedrooms", true);
        bedroom3 = new JRadioButton("3 bedrooms");
        bedroom4 = new JRadioButton("4 bedrooms");
        noGarage = new JRadioButton("No garage");
        garage1 = new JRadioButton("1 car garage");
        garage2 = new JRadioButton("2 car garage");
        garage3 = new JRadioButton("3 car garage");

        house = new ButtonGroup();
        bedroom = new ButtonGroup();
        garage = new ButtonGroup();

        house.add(aspen);
        house.add(brittany);
        house.add(colonial);
        house.add(dartmoor);

        bedroom.add(bedroom2);
        bedroom.add(bedroom3);
        bedroom.add(bedroom4);

        garage.add(noGarage);
        garage.add(garage1);
        garage.add(garage2);
        garage.add(garage3);     

        aspen.addActionListener(new RadioButtonListener());
        brittany.addActionListener(new RadioButtonListener());
        colonial.addActionListener(new RadioButtonListener());
        dartmoor.addActionListener(new RadioButtonListener());
        bedroom2.addActionListener(new RadioButtonListener());
        bedroom3.addActionListener(new RadioButtonListener());
        bedroom4.addActionListener(new RadioButtonListener());
        noGarage.addActionListener(new RadioButtonListener());
        garage1.addActionListener(new RadioButtonListener());
        garage2.addActionListener(new RadioButtonListener());
        garage3.addActionListener(new RadioButtonListener());

        panel = new JPanel();

        panel.add(aspen);
        panel.add(brittany);
        panel.add(colonial);
        panel.add(dartmoor);
        panel.add(bedroom2);
        panel.add(bedroom3);
        panel.add(bedroom4);
        panel.add(noGarage);
        panel.add(garage1);
        panel.add(garage2);
        panel.add(garage3);
        panel.add(messageLabel);


    }
    private class RadioButtonListener implements ActionListener
    {

        public void actionPerformed(ActionEvent e)
        {
            total = "";
           cost1 = 0.0;
           cost2 = 0.0;
           cost3 = 0.0;
            if (e.getSource() == aspen)
                cost1 = 100000;

            else if(e.getSource() == brittany)
                cost1 = 120000;



            else if(e.getSource() == colonial)
                cost1 = 180000;

            else if(e.getSource() == dartmoor)
                cost1 = 250000;

            if (e.getSource() == bedroom2)
                cost2 = 10500 * 2;

            else if(e.getSource() == bedroom3)
                cost2 = 10500 * 3;

            else if(e.getSource() == bedroom4)
                cost2 = 10500 * 4;

            if(e.getSource() == noGarage)
                cost3 = 0;

            else if(e.getSource() == garage1)
                cost3 = 7775;

            else if(e.getSource() == garage2)
                cost3 = 7775 * 2;

            else if(e.getSource() == garage3)
                cost3 = 7775 * 3;


            total = Double.toString(cost1 + cost2 + cost3);
        }
    }

      public static void main(String[] args) {
       new JMyNewHome();
    }
}
你需要

messageLabel.setText(total);
actioPerformed()的末尾

您已在
actioPerformed()
中更改了
total
,但从未将该总数设置为标签

public void actionPerformed(ActionEvent e){
    ...
    ...

    total = Double.toString(cost1 + cost2 + cost3);

    messageLabel.setText("$" + total);
}
编辑: 使用下面的代码,您将重置总计

total = Double.toString(cost1 + cost2 + cost3);
你想要这个

total += Double.toString(cost1 + cost2 + cost3);
你需要

messageLabel.setText(total);
actioPerformed()的末尾

您已在
actioPerformed()
中更改了
total
,但从未将该总数设置为标签

public void actionPerformed(ActionEvent e){
    ...
    ...

    total = Double.toString(cost1 + cost2 + cost3);

    messageLabel.setText("$" + total);
}
编辑: 使用下面的代码,您将重置总计

total = Double.toString(cost1 + cost2 + cost3);
你想要这个

total += Double.toString(cost1 + cost2 + cost3);

啊,谢谢,就是这样。我仍然存在每个零件的成本没有与其他零件一起添加的问题,因为在成本显示中,只有与最近选中的单选按钮关联的成本。请参阅我的编辑。简单的修复。如果这个答案有助于解决您的问题,请接受这个答案。谢谢,它非常有效。很抱歉,起初我没有接受答案。这是我第一次使用这个网站,我还没有完全意识到正确的礼仪。啊,谢谢,就是这样。我仍然存在每个零件的成本没有与其他零件一起添加的问题,因为在成本显示中,只有与最近选中的单选按钮关联的成本。请参阅我的编辑。简单的修复。如果这个答案有助于解决您的问题,请接受这个答案。谢谢,它非常有效。很抱歉,起初我没有接受答案。这是我第一次使用这个网站,但我并不完全了解正确的礼仪。