//******************************************************************** // BMIGUI.java // // Computes body mass index in a GUI. //******************************************************************** import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.DecimalFormat; public class BMIGUI { private final int WIDTH = 275; private final int HEIGHT = 100; DecimalFormat fmt = new DecimalFormat ("0.00"); private JFrame frame; private JPanel panel; private JLabel heightLabel, weightLabel, BMILabel, resultLabel; private JTextField height, weight; private JButton calculate; //----------------------------------------------------------------- // Sets up the GUI. //----------------------------------------------------------------- public BMIGUI() { 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 resultLabel = new JLabel ("") ; //create a JTextField to hold the person's height in inches height = new JTextField (5); //create a JTextField to hold the person's weight in pounds weight = new JTextField (5) ; //create a button to press to calculate BMI calculate = new JButton ("calculate BMI"); //create a BMIListener and make it listen for the button to be pressed calculate.addActionListener ( new BMIListener () ) ; //set up the JPanel to go on the JFrame panel = new JPanel(); panel.setPreferredSize (new Dimension(WIDTH, HEIGHT)); panel.setBackground (Color.yellow); //add the height label and height textfield to the panel 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 (calculate) ; //add the BMI label to the panel panel.add (BMILabel) ; //add the label that holds the result to the panel panel.add (resultLabel) ; //add the panel to the frame frame.getContentPane().add (panel); } //----------------------------------------------------------------- // Displays the primary application frame. //----------------------------------------------------------------- public void display() { frame.pack(); frame.setVisible(true); } //***************************************************************** // Represents an action listener for the calculate button. //***************************************************************** private class BMIListener implements ActionListener { //-------------------------------------------------------------- // Compute the BMI when the button is pressed //-------------------------------------------------------------- public void actionPerformed (ActionEvent event) { String heightText, weightText; double heightVal, weightVal, bmi; //get the text from the height and weight textfields heightText = height.getText(); weightText = weight.getText(); //Use Integer.parseInt to convert the text to integer values heightVal = Double.parseDouble (heightText) ; weightVal = Double.parseDouble (weightText) ; //Calculate the bmi = 703 * weight in pounds / (height in inches)^2 bmi = weightVal / (heightVal*heightVal) ; //Put result in result label. Use Double.toString to convert double to string. resultLabel.setText( fmt.format(bmi) ) ; } } }