做一个窗体应用程序“体重指数计算器”,能根据用户输入的性别、身高、体重计算出“体质指数(身体质量指数)”,并给出是否偏胖的判断。其中,体质指数(BMI)=体重(kg)÷身高^2(m),大于24则为偏胖,更详细的判断可以在网上查查相关的资料。要求有用户界面组件(如文本框、单选按钮、按钮)、布局和事件处理。
评分标准:
是一个窗体应用程序(1分);
有按钮、文本框等组件(2分);
有布局(2分);
有事件处理(2分);
正确计算,并显示结果(2分);
总体较好(1分)。
package text;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class BodyMassIndex extends JFrame{
private double height;//厘米
private double weight;//千克
JTextField Theight = new JTextField(10);
JTextField Tweight = new JTextField(10);
JLabel LBML = new JLabel();
JButton putout = new JButton("看看结果");
public void setHeight(double height) {
this.height=height/100.0;
}
public void setWeight(double weight) {
this.weight=weight;
}
public double BML() {
return weight/(height*height);
}
public BodyMassIndex() {
LBML.setFont(new Font(null, ALLBITS, 17));//设置字体
putout.setSize(40,10);
//设置事件处理
putout.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setHeight(Double.parseDouble(Theight.getText()));
setWeight(Double.parseDouble(Tweight.getText()));
if(BML()>24) {
LBML.setText("有一些胖呢");
}
else LBML.setText("恭喜您,您身材很好");
//弹出窗口
JFrame r=new JFrame();
r.add(LBML);
r.setSize(70,100);
r.setVisible(true);
r.setLocation(400, 300);
//隐藏窗口
r.setDefaultCloseOperation(HIDE_ON_CLOSE);;
}
});
//界面初始化
setTitle("看看你的身材");
setLayout(new BorderLayout());
setSize(500,150);
setLocation(300, 300);
setVisible(true);
JPanel pnlHear=new JPanel();
pnlHear.add(new JLabel("请输入身高(单位:厘米):"));
pnlHear.add(Theight);
JPanel pnlTol=new JPanel();
pnlTol.add(new JLabel("请输入体重(单位:千克):"));
pnlTol.add(Tweight);
add(pnlHear,BorderLayout.NORTH);
add(pnlTol,BorderLayout.SOUTH);
add(putout,BorderLayout.EAST);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(()->{
new BodyMassIndex();
});
}
}