纯Java小白,很多听不明白,这个是老师布置的课堂作业,实在做不出来,请问有人能教一下吗,特别是点击按钮进行运算这一块

来源:1-1 为什么学习JavaScript

慕莱坞5415613

2023-09-19 11:32

纯Java小白,很多听不明白,这个是老师布置的课堂作业,实在做不出来,请问有人能教一下吗,特别是点击按钮进行运算https://img1.mukewang.com/65091645000159f609900579.jpg

写回答 关注

1回答

  • 囍3235905
    2025-08-31 11:36:50

    import javax.swing.*;

    import java.awt.*;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;


    public class BMI Calculator extends JFrame {

        // 定义界面组件

        private JLabel nameLabel, genderLabel, heightLabel, weightLabel, resultLabel;

        private JTextField nameField, heightField, weightField;

        private JRadioButton maleRadio, femaleRadio;

        private JButton calculateButton;


        public BMI Calculator() {

            // ---------- 1. 初始化窗口 ----------

            setTitle("BMI 计算器");       // 窗口标题

            setSize(400, 300);          // 窗口大小

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序

            setLayout(new GridLayout(6, 2, 10, 10)); // 网格布局:6行2列,间距10像素


            // ---------- 2. 创建组件 ----------

            // 标签

            nameLabel = new JLabel("姓名:");

            genderLabel = new JLabel("性别:");

            heightLabel = new JLabel("身高(cm):");

            weightLabel = new JLabel("体重(kg):");

            resultLabel = new JLabel("结果:");


            // 输入框

            nameField = new JTextField();

            heightField = new JTextField();

            weightField = new JTextField();


            // 单选按钮(男/女)

            maleRadio = new JRadioButton("男");

            femaleRadio = new JRadioButton("女");

            ButtonGroup genderGroup = new ButtonGroup(); // 单选按钮组,确保二选一

            genderGroup.add(maleRadio);

            genderGroup.add(femaleRadio);

            maleRadio.setSelected(true); // 默认选“男”


            // 计算按钮

            calculateButton = new JButton("计算");


            // ---------- 3. 添加组件到窗口 ----------

            add(nameLabel); add(nameField);

            add(genderLabel); 

            JPanel genderPanel = new JPanel(); // 用面板装两个单选按钮,避免布局混乱

            genderPanel.add(maleRadio);

            genderPanel.add(femaleRadio);

            add(genderPanel);

            add(heightLabel); add(heightField);

            add(weightLabel); add(weightField);

            add(calculateButton); add(resultLabel);


            // ---------- 4. 给“计算”按钮添加点击事件 ----------

            calculateButton.addActionListener(new ActionListener() {

                @Override

                public void actionPerformed(ActionEvent e) {

                    try {

                        // 获取输入的身高(转成米)和体重

                        double height = Double.parseDouble(heightField.getText()) / 100;

                        double weight = Double.parseDouble(weightField.getText());

                        // 计算BMI

                        double bmi = weight / (height * height);

                        // 判断体型

                        String status;

                        if (bmi < 18.5) {

                            status = "偏瘦";

                        } else if (bmi < 24) {

                            status = "正常";

                        } else {

                            status = "偏胖";

                        }

                        // 显示结果

                        resultLabel.setText("BMI:" + String.format("%.2f", bmi) + ",体型:" + status);

                    } catch (NumberFormatException ex) {

                        // 处理输入非数字的情况

                        resultLabel.setText("请输入有效的身高和体重!");

                    }

                }

            });

        }


        public static void main(String[] args) {

            // 在 Swing 中,GUI 操作要放在事件调度线程(EDT)中

            SwingUtilities.invokeLater(new Runnable() {

                @Override

                public void run() {

                    BMI Calculator frame = new BMI Calculator();

                    frame.setVisible(true); // 显示窗口

                }

            });

        }

    }


JavaScript入门篇

JavaScript做为一名Web工程师的必备技术,本教程让您快速入门

741593 学习 · 9869 问题

查看课程

相似问题