The file Fahrenheit.java is similar to the example program in Listings 6.5 & 6.6 of the text (pages 249 - 251). The program converts temperatures in Fahrenheit to the Celsius equivalent. The user enters a temperature in the text field and when the enter key is pressed the Celsius equivalent is computed and displayed. Pressing the enter key on a text field generates an action event so the program must implement the ActionListener interface. Save the program file to your lab 2 directory and run it to see how it works. Study the code noting the following:
drawString
method).actionPerformed
method uses
the getText
method to get the information out of
the text field. That information is returned as a
String.In this exercise you will write a GUI program to compute a person's Body Mass Index. Body Mass Index (BMI) is a measure of weight that takes height into account. BMI is a simple way to determine if a person is over-weight or under-weight. BMI is calculated as follows for both men and women:
(703 * weight in pounds) / (height in inches)2
The file BMICalculator.java contains a skeleton for a GUI program to calculate BMI. Since there are two input values needed (the height and weight) this program will not respond to the user pressing the enter key on a text field as the Fahrenheit program does. Instead, it will have a button 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 and 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. Follow the instructions in the comments of the program.
Run the BMI program to test it. The layout of the program
looks a little strange with the calculate button on the same row
as the output label. In order to put these onto separate rows,
you can add the button to a panel that is too wide to fit anything
else on the same row. In the main method, create a
new JPanel
The file MouseTest.java contains the program from class that prints mouse events. The file Draw.java contains the outline of a graphical program. For this section of the lab you will create a program that allows the user to draw on the window using the mouse. Do the following:
mouseDragged
method and run
the program to test that the mouseDragged
method is
being called when you click and drag across the program's
window.mouseDragged
method to update the x and y
instance variables to the current location of the mouse. Also
add code to the paint component method to draw a small filled
oval that is centered over the location specified by the mouse
coordinate instance variables. The size of the oval should be
stored in a static final instance variable. Also add a call to
the repaint
method at the end of
the mouseDragged
method so that
the paintComponent
method is called every time the
mouse is dragged. Run the program, it should draw an oval
underneath the mouse when it is dragged.paintComponent
method is called. The first
line of code, super.paintComponent(g)
, calls
the paintComponent
method of the class that this
class extends, which is JPanel. The only thing that this method
does is draw a filled rectangle over the entire window that is
the color of the background. So, if you delete this line of
code, previously drawn ovals will not be erased and dragging the
mouse should draw lines. Be sure to test your program.The file Dog.java contains a declaration for a Dog class. Save this file to your directory and study it -- notice what instance variables and methods are provided.
The file DogTest.java contains a simple driver program that creates a dog and makes it speak. Study DogTest.java, save it to your directory, and then run it to confirm what it does.
The file Yorkshire.java contains declarations for a class that extends Dog. Save and study this files as well. Notice that the constructor calls the constructor of the Dog class using the reserved word super. Modify DogTest.java to add statements to add and print a Yorkshire (also make it speak).
The file Labrador.java also extends the Dog class. However, note that the Labrador constructor takes two parameters: the name and color of the labrador, both strings. Notice that this class contains an error:
Implicit super constructor Dog() is undefined
This is because the first line to every constructor must be a call the the constructor of the super class. If you do not explicitly make this call, the java compiler will insert an implicit call to the constructor of the super class assuming that there are no parameters. However, in the case of the Dog class there is no constructor with no parameters. Fix the problem by adding an explicit call to to the Dog class constructor. Then modify DogTest.java to create and make the Dog, Labrador, and Yorkshire all speak.
Add code to DogTest.java to print the average breed weight for
both your Labrador and your Yorkshire. Use
the avgBreedWeight
method for both. Look
at the error that you get. Figure out what is wrong and fix the
problem by adding the needed code to the Yorkshire class.
Inheritance can be a useful way of structuring code for reuse. It can also be used to reuse existing code by adding functionality even if you did not write the original code. The file ToggleTest.java contains a program that uses the class ToggleButton.java that extends JButton to display a button that can be toggled between two different states (on or off). When the button is pressed it should change its text to reflect its new state. Complete the class by:
isOn
method for the class. This
method allows a user of the class to query the state of the
button. You should use a boolean instance variable to hold the
state of the button.ProcessMouseEvent
method for the
class. This method is an overridden method. It is called
anytime there is a mouse event (mouse press, mouse release,
mouse click, mouse moved, mouse entered, etc.). By calling the
getID
method of the MouseEvent parameter you can
determine what the current event is. If the current event is
MouseEvent.MOUSE_RELEASED
, then the button was
clicked. In this case, update the button text using
the setText
method of the JButton class and update
the boolean instance variable to reflect the new state of the
button.Submit a zip file of your code on the course Inquire site that uses your last names as the file name.