gpt4 book ai didi

java - 带有 Action 监听器的单选按钮

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:24 24 4
gpt4 key购买 nike

这个程序应该允许用户通过从三组单选按钮中进行选择来“设计”房屋,并在同一窗口中显示房屋的最新(每次进行更改时刷新)总成本,但我似乎无法获得实际显示除 $0.0 或 null 之外的任何内容的成本,我很确定问题出在我使用 Action 监听器的方式上。任何有关如何解决此问题的帮助将不胜感激。

/*
* 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() 中的总计,但从未将该总计设置为标签

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);

关于java - 带有 Action 监听器的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com