( 10分 )
做一个窗体应用程序“体重指数计算器”,能根据用户输入的性别、身高、体重计算出“体质指数(身体质量指数)”,并给出是否偏胖的判断。其中,体质指数(BMI)=体重(kg)÷身高^2(m),大于24则为偏胖,更详细的判断可以在网上查查相关的资料。要求有用户界面组件(如文本框、单选按钮、按钮)、布局和事件处理。
评分标准:
是一个窗体应用程序(1分);
有按钮、文本框等组件(2分);
有布局(2分);
有事件处理(2分);
正确计算,并显示结果(2分);
总体较好(1分)。
Codes:
package JavaGUI;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*
做一个窗体应用程序“体重指数计算器”,能根据用户输入的性别、身高、体重计算出“体质指数
(身体质量指数)”,并给出是否偏胖的判断。其中,体质指数(BMI)=体重(kg)÷身高^2(m),
大于24则为偏胖,更详细的判断可以在网上查查相关的资料。要求有用户界面组件(如文本框、
单选按钮、按钮)、布局和事件处理。
评分标准:
是一个窗体应用程序(1分);
有按钮、文本框等组件(2分);
有布局(2分);
有事件处理(2分);
正确计算,并显示结果(2分);
总体较好(1分)。
*/
public class BmiCal extends JFrame implements ActionListener {
private static final Component JPanel = null;
JTextField weight;
JTextField height;
JButton submit,reset;
CheckboxGroup sex=new CheckboxGroup();
JLabel res=new JLabel("BMI指数为:");
public BmiCal() {
super("体重指数计算器");
Container BC=getContentPane();
JPanel cont=new JPanel();
cont.setLayout(new GridLayout(4,2));
cont.add(new JLabel("体重(kg):"));
Font font=new Font("宋体",10,30);
weight=new JTextField(10);
cont.add(weight);
cont.add(new JLabel("升高(m):"));
height=new JTextField(10);
cont.add(height);
height.setFont(font);
weight.setFont(font);
cont.add(new Checkbox("男",true,sex));
cont.add(new Checkbox("女",false,sex));
submit=new JButton("确认");
cont.add(submit);
submit.setFont(font);
reset=new JButton("重置");
cont.add(reset);
reset.setFont(font);
submit.addActionListener(this);
reset.addActionListener(this);
BC.setLayout(new BorderLayout(5,5));
BC.add("Center",cont);
BC.add("South",res);
res.setFont(font);
setSize(500,800);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
double wei,hei,bmi;
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==reset) {
weight.setText("");
height.setText("");
System.out.println("reset");
}
else if(e.getSource()==submit) {
String sw=weight.getText();
String sh=height.getText();
if(sw.contentEquals("") || sh.contentEquals(""))
JOptionPane.showMessageDialog(JPanel,"数据缺失!请填写完整!","温馨提示",JOptionPane.WARNING_MESSAGE);
else {
wei=Double.valueOf(weight.getText());
hei=Double.valueOf(height.getText());
bmi=wei/(hei*hei);
dataProcess(bmi);
}
}
}
public void dataProcess(double bmi) {
String info;
bmi= (double)Math.round(bmi*10)/10;
System.out.println("bmi="+bmi);
if(bmi<=18.4) {
info="偏瘦";
}
else if(bmi>=18.5 && bmi<=23.9)
info="正常";
else if(bmi>=24.0 && bmi<=27.9)
info="过重";
else
info="肥胖";
res.setText("BMI指数为"+bmi+","+info);
}
public static void main(String[] args) {
new BmiCal();
}
}