Design and develop a GUI Java program to convert temperatures from Fahrenheit to Celsius and from Celsius to Fahrenheit. (This problem is derived from exercise #6.22, p. 240 of the text). The GUI should contain two JTextField’s, two JLabel’s, and two JButton’s. The text fields will be used for entry of one temperature value (either Fahrenheit or Celsius). The JLabels will name the text fields – i.e. ‘Celsius’ and ‘Fahrenheit’. After entering a single temperature value, the user will then press the appropriate ‘convert’ command button – i.e. ‘Convert to Celsius’ or ‘Convert to Fahrenheit’. The button event handler for the button pressed will calculate the converted temperature and display that in the appropriate text field for temperature. Use anonymous event handles in all cases. It doesn’t need to be fancy, just gets the job done. Thanks!
Conversion Formulas:
celsius= 5.0/9.0 * (farenheight -32);
farenheiht = 9.0/5.0 * (celsius + 32);
Starting Point:
package anonymousGUI;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleComponentFrame extends JFrame {
// declare instance variables – i.e. references to components
private JLabel label1;
private JTextField field1;
private JButton button1, button2, buttonClear;
// methods – the constructor to define components, event handlers, etc.
public SimpleComponentFrame () {
// design GUI, title and layout manager first
super (“A Simple GUI”);
setLayout (new FlowLayout ());
// create and add components
label1 = new JLabel (“I’m a label”);
add (label1);
field1 = new JTextField (15);
add (field1);
button1 = new JButton (“Press me”);
add (button1);
button2 = new JButton (“Not Yet”);
add (button2);
buttonClear = new JButton (“Clear”);
add (buttonClear);
// design event handlers here
Handler handleEvents = new Handler ();
button1.addActionListener (handleEvents);
button2.addActionListener (
new ActionListener () {
// override
public void actionPerformed (ActionEvent event) {
JOptionPane.showMessageDialog (null, “I’m button2”);
} // end method actionPerformed
} // end my anonymous inner class
);
buttonClear.addActionListener (
new ActionListener () {
// override
public void actionPerformed (ActionEvent event) {
// clear the field
field1.setText (“”);
} // end method actionPerformed
} // end anonymous inner class
); // end method addActionListener
} // end constructor
// create a nested, inner class that is the event handler class
private class Handler implements ActionListener {
// the actionPerformed override
public void actionPerformed (ActionEvent event) {
String text = “”;
// assume/know the only component to generate an event will be the button
// use the set/get text methods to get textfield data. We can because an
// inner class has access to private variables of the ‘containing’ class
text = “You Pressed ME! ” + field1.getText ();
// show a message dialog
JOptionPane.showMessageDialog (null, text);
} // end method actionPerformed
} // end nested class Handler
} // end class SimpleComponentFrame
Test Driver:
package anonymousGUI;
import javax.swing.JFrame;
public class TestDriver {
public static void main(String[] args) {
// declare local variables/references here
SimpleComponentFrame frame = new SimpleComponentFrame ();
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setSize (300,150);
frame.setVisible (true);
} // end method main
} // end class TestDriver
Expert Answer
import javax.swing.*; import java.awt.*; import java.awt.event.*; class SimpleComponentFrame extends JFrame implements ActionListener{ // methods – the constructor to define components, event handlers, etc. // design GUI, title and layout manager first //labels && TextFileds && buttons //adding action listners setVisible(true); public class TestDriver { public static void main(String[] args) { } // end method main } // end class TestDriver |