-2
我想用Java中的GUI创建一个BMI计算器。我对GUI甚至Java都很陌生。计算器假设显示BMI的建议,甚至时间和日期。然而,只有BMI显示,其余不能。..我一直在网上搜索如何显示结果从其他条件在线,但无济于事。这是我的代码;GUI中的BMI计算器;
public class BMI extends JFrame implements ActionListener {
private static final JButton JButton = null;
private JFrame frame;
private JPanel panel;
private JLabel heightLabel, weightLabel, BMILabel;
private JTextField height, weight, result;
private JButton calculate;
String Height, Weight;
double number1, number2, BMI;
static String output = "Results";
static int jopIcon = JOptionPane.QUESTION_MESSAGE;
boolean bFlag = true; //state, true means no exception
public BMI() {
frame = new JFrame("BMI Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//create labels for the height and weight textfields
heightLabel = new JLabel("Your height in meters:");
weightLabel = new JLabel("Your weight in kilograms: ");
//create a "this is your BMI" label
BMILabel = new JLabel("Your BMI is ");
//create a result label to hold the BMI value
result = new JTextField("");
//create a JTextField to hold the person's height in kilograms
height = new JTextField(1);
//create a JTextField to hold the person's weight in metres
weight = new JTextField(1);
calculate = new JButton("Calculate BMI");
//set up the JPanel to go on the JFrame
panel = new JPanel();
panel.add(heightLabel);
panel.add(height);
//add the weight label and weight textfield to the panel
panel.add(weightLabel);
panel.add(weight);
//add the button to the panel
panel.add(BMILabel);
//add the label that holds the result to the panel
panel.add(result);
//add the panel to the frame
panel.add(calculate);
//add the BMI label to the panel
frame.getContentPane().add(panel);
JPanel p1 = new JPanel();
panel.setLayout(new GridLayout(4, 1));
add(p1, BorderLayout.SOUTH);
calculate.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);//important must [email protected]! if not GUI will not be display
}
public String getDateTime() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
return dateFormat.format(date);
}
public void calculateBMI(double number1, double number2) {
try {
BMI = number2/((number1) * 2);
} catch (NumberFormatException nfe) {
output += "\n\n Whoa! Input error: must enter valid integers";//if exception comes out, prepare error message
jopIcon = JOptionPane.ERROR_MESSAGE;
}
}
public void calculate() {
Height = height.getText();
Weight = weight.getText();//declare the Height string with Jtext height
try {
number1 = Double.parseDouble(Height);
number2 = Double.parseDouble(Weight);//exception may come out
calculateBMI(number1, number2);
} finally {
if (BMI >= 27.5) {
output += "\n\n You're in the High Risk zone(UnHealthy). Please start losing weight! It's a MUST!";
} else if (BMI <= 23 || BMI < 27.4) {
output += "\n\n You're in the Moderate Risk zone. Please start going on diet and lose some weight";
} else if (BMI <= 18.5 || BMI < 22.9) {
output += " You're in the Low Risk zone(Healthy). Hopefully you can maintain this way! ^^";
} else if (BMI < 18.4) {
output += "\n\n You really need to start eating more. Too skinny and unhealthy for your body";
}
}
}
public static void main(String[] args) {
BMI bmi = new BMI();
}
@Override
public void actionPerformed(ActionEvent e) {
//call the calculate
this.calculate();
result.setText("" + BMI);
// TODO Auto-generated method stub
}
}
如果您要求免费帮助,请至少尝试发布格式良好的代码并不多。 – 2013-02-10 05:19:00
该解决方案仅仅是添加一个组件,该组件将显示您想要显示给GUI的数据*,就像您用来显示重量,高度和结果*一样。您已经知道如何添加这些JTextField组件,因此添加更多JTextFields或JLabel以显示附加信息应该很简单,不是吗? – 2013-02-10 05:21:16
我没有看到你试图解决问题的地方,所以你来这里可能还为时过早。为什么不首先尝试显示附加信息,并且只有在您的尝试不起作用时才会尝试进行尝试? – 2013-02-10 05:22:25