Adding Some Color Modify the panel so that its
color is blue if the Blue button is ahead in the number of "votes"
and red if Red is ahead and magenta if it is a tie. Do the following:
- In actionPerformed, after the count has been updated and
displayed,
add a statement to set the background
color of the panel based on who is ahead. All Java components have
a method:
void setBackground (Color color)
that changes the background color of the component.
- Also, change the color of the labels so they clearly show
up -- use different colors to go with each background (you can
choose the colors).
Components have a setForeground method that is analogous to the
setBackground method. The setForeground method changes the
color of the text in labels and in buttons. Note that the method
must operate on the label objects!
- Compile and test your program. Be sure your colors look good and
that the labels are visible. If you wish you can also change the
foreground and/or background colors of the buttons.
Using TextFields - Computing Body Mass Index
The files Fahrenheit.java and
FahrenheitPanel.java contain
the example program in Listings 4.12 & 4.13 of the text (pages 196 - 198).
The program converts temperatures in Fahrenheit to the Celsius
equivalent. The user enters a temperature in the text field and when
ENTER is pressed the Celsius equivalent is computed and displayed.
Pressing ENTER on a text field generates an action event so
the program must implement the ActionListener interface. Do the
following:
- Save the program files to your directory, compile the program and run
it to see how it works.
- Study the code in FahrenheitPanel.java noting the following:
- The actionPerformed method uses the getText method
to get the information out of the text field. That information is
returned as a String.
- The string from the text field must be converted to a number
(in this case an int) for calculations. The parseInt method
in the Integer class does this.
- The toString method in the Integer class is used to convert
the Celsius temperature back to a String. An alternate way to do this
would be "" + celsiusTemp.
In this exercise you will write a similar program to compute a
person's Body Mass Index.
Body Mass Index (BMI) is a measure of weight that takes height into account.
Generally, a BMI above 25 is considered high, that is, likely to indicate
that an individual is overweight. BMI is calculated as follows for both
men and women:
(703 * weight in pounds) / (height in inches)2
-
File BMI.java contains the main program
that creates the frame for the GUI panel and adds the panel to the
content pane of the frame. The file BMIPanel.java
contains a skeleton for the GUI to
calculate BMI. Since there are two input values needed (the height and
weight) this program will not respond to the user pressing ENTER on a
text field.
Instead, we will put a button on the panel for the user to press
to trigger the calculation.
So, the user enters his or her height and weight and presses a
"Calculate BMI" button; the program then displays
the user's BMI. Much of the framework has been done for you, but you will need
to fill in code.
Do the following (follow the instructions and the comments in the program):
In the constructor for the panel you need to do the following (put
your code for each immediately after the corresponding comment in the
code):
- JLabels have already been created to identify the height and weight
textfields. You need to create (instantiate) the
JLabels for the output, and to hold the
actual BMI. (NOTE: You need to use the variables that have already
been declared.)
- Create JTextFields to hold the person's height in inches and weight in pounds.
- Create an appropriately labeled JButton for the user to press to calculate the BMI.
- Create a BMIListener and make it listen for the button to be pressed.
Note that the listener is added to the button, not
the textfields, so the BMI is computed only when the button is pressed,
not when the
user presses Enter on the textfields.
- Add the height label and textfield to the panel.
Note that the components will appear on the panel
in the order
in which you add them (left to right, top to bottom).
- Add the weight label and textfield to the panel.
- Add the button to the panel.
- Add the label identifying the result and the label holding the result to
the panel.
In the actionPerformed method of BMIListener:
- Get the text from the height and weight textfields and store
the results in the String variables provided.
- Use Integer.parseInt to convert the text to integer values, and store
them in the int values provided.
- Calculate the BMI from the height and weight values (use double
precision arithmetic). Use Math.round to round the answer.
- Use Double.toString to convert the BMI to a string, and store the string in
the result label.
Compile the BMI program and run it.
- Add code to the BMIPanel
to let the user have some idea of what
their BMI means. You need to either modify the JLabel that displays
the BMI or add a new JLabel. Your program should include a message based
on the following: a BMI less than 19 indicates the person is underweight,
a BMI between 19 and 25 (inclusive) means a healthy weight, a BMI between
26 and 30 (inclusive) indicates the person is overweight, and a BMI over
30 indicates the person is very overweight. NOTE: Use an if to
choose the appropriate message.
Using Buttons to Display Images
In this exercise you will use buttons to select a picture to display on
a GUI panel.
- First we will need some pictures to work with.
The archive file pics.tgz contains some pictures
of Cats and Dogs. You may already have this file from Lab 4. If not,
save it to your Labs directory. Change directories to Labs and
uncompress the archive using the command
tar xzf pics.tgz
Verify that there is a pics directory in Labs that
contains four .gif files.