我想在 Java 中使用 GUI 创建一个 BMI 计算器。我对 GUI 甚至 Java 都很陌生。计算器应该显示带有建议甚至时间和日期的 BMI。但是,只有 BMI 显示,而其余的则不能。我一直在网上搜索如何在网上显示 if else 条件的结果,但无济于事。这是我的代码;
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 HAVE@! 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
}
}