该程序应该允许用户通过从三组单选按钮中进行选择来“设计”房屋,并在同一窗口中显示房屋的最新(每次更改时刷新)总成本,但是我可以似乎并没有实际显示除$ 0.0或null以外的任何内容的成本,而且我很确定问题出在我使用动作侦听器的方式上。任何有关如何解决此问题的帮助将不胜感激。
/*
* 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()
末尾您已经更改了
total
中的actioPerformed()
,但从未将总计设置为标签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);