3条回答
- JonsonJiao 2015-06-01 05:59关注
你的核心问题是如何对按钮进行响应,需要看下ActionListener的相关方法。
public class BMI extends JFrame{ private JLabel lblHeight; private JLabel lblWeight; private JLabel lblBMI; private JLabel lblResult; private JButton btnRun; private JPanel pnlMain; private JTextField txtHeight; private JTextField txtWeight; private JTextField txtBMI; private JTextField txtResult; DecimalFormat dformat = new DecimalFormat("#.00"); public BMI(){ lblHeight = new JLabel("身高(米/m)"); txtHeight = new JTextField(10); lblWeight = new JLabel("体重(千克/kg)"); txtWeight = new JTextField(10); lblBMI = new JLabel("健康值(BMI)"); txtBMI = new JTextField(10); lblResult = new JLabel("结果"); txtResult = new JTextField(10); btnRun = new JButton("评估"); pnlMain = new JPanel(); pnlMain.setLayout(null); lblHeight.setBounds(100, 50, 80, 25); txtHeight.setBounds(200, 50, 100, 25); lblWeight.setBounds(100, 80, 80, 25); txtWeight.setBounds(200, 80, 100, 25); lblBMI.setBounds(100, 110, 80, 25); txtBMI.setBounds(200, 110, 100, 25); lblResult.setBounds(100, 170, 80, 25); txtResult.setBounds(200, 170, 100, 25); btnRun.setBounds(150, 140, 80, 25); pnlMain.add(lblHeight); pnlMain.add(txtHeight); pnlMain.add(lblWeight); pnlMain.add(txtWeight); pnlMain.add(lblBMI); pnlMain.add(txtBMI); pnlMain.add(lblResult); pnlMain.add(txtResult); pnlMain.add(btnRun); this.setContentPane(pnlMain); setSize(400,300); setTitle("健康评估"); setVisible(true); setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); btnRun.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if( txtWeight.getText() == null){ JOptionPane.showMessageDialog(null, "身高为空,请输入一个正值身高!"); return; } if( txtHeight.getText() == null){ JOptionPane.showMessageDialog(null, "体重为空,请输入一个正值体重!"); return; } double weight = Double.valueOf(txtWeight.getText()); if(weight <= 0 ){ JOptionPane.showMessageDialog(null, "体重为0,请输入一个正值体重。"); return; } double height = Double.valueOf(txtHeight.getText()); if(height <= 0 ){ JOptionPane.showMessageDialog(null, "身高为0,请输入一个正值身高。"); return; } double bmi = weight/height/height; txtBMI.setText(dformat.format(bmi)); txtResult.setText(getResult(bmi)); } }); } private String getResult(double bmi) { // TODO Auto-generated method stub if(bmi < 18.5){ return "瘦"; }else if(bmi>=18.5 && bmi < 24){ return "正常"; }else{ return "胖"; } } public static void main(String[] args) { new BMI(); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
- ¥15 matlab数字图像处理频率域滤波
- ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
- ¥15 ELGamal和paillier计算效率谁快?
- ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
- ¥15 Arcgis相交分析无法绘制一个或多个图形
- ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
- ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
- ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
- ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误