0

A temperature converter GUI. Converts from Celsius to Fahrenheit and vise versa. Tests JLabels, JButtons and JTextFields.

*Two separate programs, Converter and Thermometer (Thermometer Class)*

// Arman Majumder
//Temperature Converter GUI
// Requires Thermometer Class <Thermometer.java>  Included in bottom

   import java.awt.*;
   import java.awt.event.*;
   import javax.swing.*;

    public class Converter extends JFrame
   {
      private Thermometer thermo = new Thermometer();
      private JLabel fahrLabel = new JLabel("Degrees Fahrenheit");
      private JLabel celsiusLabel = new JLabel("Degrees Celsius");
      private JTextField fahrField = new JTextField("32.0");
      private JTextField celsiusField = new JTextField("0.0");
      private JButton fahrButton = new JButton("Convert >>>");
      private JButton celsiusButton = new JButton("<<< Convert");
      
       public Converter()
      {
         JPanel dataPanel = new JPanel(new GridLayout(2, 2, 12, 6));
         dataPanel.add(fahrLabel);
         dataPanel.add(celsiusLabel);
         dataPanel.add(fahrField);
         dataPanel.add(celsiusField);
      
         JPanel buttonPanel = new JPanel();
         buttonPanel.add(fahrButton);
         buttonPanel.add(celsiusButton);
         Container container = getContentPane();
         container.add(dataPanel, BorderLayout.CENTER);
         container.add(buttonPanel, BorderLayout.SOUTH);
         fahrButton.addActionListener(new FahrenheitListener());
         celsiusButton.addActionListener(new CelsiusListener());
      }
   	
       private class FahrenheitListener implements ActionListener
      {
          public void actionPerformed(ActionEvent e)
         {
            try
            {
               String input = fahrField.getText();
               double fahr = Double.parseDouble(input);
               thermo.setFahrenheit(fahr);
               double celsius = thermo.getCelsius();
               celsiusField.setText(String.format("%.2f", celsius));
            }
                catch(Exception ex)
               {
                  JOptionPane.showMessageDialog(null, "ERROR: Input Syntax");
               }
         }
      }
   
       private class CelsiusListener implements ActionListener
      {
          public void actionPerformed(ActionEvent e)
         {
            String input = celsiusField.getText();
            double celsius = Double.parseDouble(input);
            thermo.setCelsius(celsius);
            double fahr = thermo.getFahrenheit();
            fahrField.setText(String.format("%.2f", fahr));
         }
      }  
      
       public static void main(String [] args)
      {
         Converter theGUI = new Converter();
         theGUI.setTitle("F to C Converter");
         theGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         theGUI.pack();
         theGUI.setVisible(true);
      } 
   }

//////////////////////////////////////////////////////////////////////////////////
//Thermometer Class 
// New Program
//////////////////////////////////////////////////////////////////////////////////

// Arman Majumder
// Corresponds with Temperature Converter GUI <Converter.java>

    public class Thermometer 
   {
      private double degreesCelsius;
   
       public void setCelsius(double degrees)
      {
         degreesCelsius = degrees;
      }
       public void setFahrenheit(double degrees)
      {
         degreesCelsius = (degrees - 32.0) * 5.0 / 9.0;
      }
       public double getCelsius()
      {
         return degreesCelsius;
      }
       public double getFahrenheit()
      {
         return degreesCelsius * (9.0 / 5.0) + 32.0;
      }   
   }
5
Contributors
4
Replies
22
Views
10 Years
Discussion Span
Last Post by robinlrandall
0

I tried to copy the text to my Complier program but it doesn't work

0

my program is just 2 classes..

convert from Fahrenheit to Celsius and from Celsius to Fahrenheit:

Class 1:

// Author: Helen Toma

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JTextField;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;

public class ConvertTemp extends JFrame {
	// instance variables 
	JLabel labelFahr;
	JLabel labelCels;
	JTextField textFahr;
	JTextField textCels;
	JButton conFahToCel;
	JButton conCelToFah;
	
	public ConvertTemp () {
		
		super ("Temperature");
		setLayout (new FlowLayout ());
		
		labelFahr = new JLabel ("Fahrenheit: ", SwingConstants.LEFT);
		labelFahr.setToolTipText("This is a temerature scale");
		add (labelFahr);
		textFahr = new JTextField (10);
		add (textFahr);
		
		labelCels = new JLabel ("Celsius:       ", SwingConstants.LEFT);
		labelCels.setToolTipText("This is a scale and unit of measurement for temperature");
		add (labelCels);
		textCels = new JTextField (10);
		add (textCels);
		
		conFahToCel = new JButton ("Convert Fahrenheit to Celsius");
		add (conFahToCel);
		conCelToFah = new JButton ("Convert Celsius to Fahrenheit");
		add (conCelToFah);
		
		JPanel panel = new JPanel(new GridLayout(2, 2, 12, 6));
		panel.add(labelFahr);
		panel.add(labelCels);
		panel.add(textFahr);
		panel.add(textCels);
		add(panel, BorderLayout.NORTH);
		
		JPanel buttonPanel = new JPanel();
		buttonPanel.add(conFahToCel);
		buttonPanel.add(conCelToFah);	
		add(buttonPanel, BorderLayout.SOUTH);
		
		conFahToCel.addActionListener(new FahrListener ());
		conCelToFah.addActionListener(new CelsListener ());
		
	} // end constructor 
	
	private class FahrListener implements ActionListener {
		public void actionPerformed(ActionEvent event) {
			if (event.getSource() == conFahToCel){
				int conFahToCel = (int) ((5.0/9.0 * (((Double.parseDouble(textFahr.getText())) -32))));
				textCels.setText(conFahToCel + " °C");
				textFahr.requestFocus();
				textFahr.selectAll();
			} // end if statement
			
		} // end actionPerformed
	} // end FahrListener
	
	private class CelsListener implements ActionListener {
		public void actionPerformed(ActionEvent event) {
			if (event.getSource() == conCelToFah){
				int conCelToFah = (int) (( 9.0/5.0 * (((Double.parseDouble(textCels.getText())) + 32))));
				textFahr.setText(conCelToFah + " °F");
				textCels.requestFocus();
				textCels.selectAll();
			} // end if statement
			
		} // end actionPerformed
	} // end CelsListener
	
} // end class ConvertTemp

----------------------------------------------------------------------------------------

Class 2:

// Author: Helen Toma

import javax.swing.JFrame;

public class ConvertTempTest {

	public static void main(String[] args) {
		
		ConvertTemp app = new ConvertTemp ();
		app.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		app.setSize (500, 150); // set the frame size
		app.setVisible (true); // display frame

	} // end main method

} // end class ConvertTempTest

Edited by peter_budo: Adding code tags to post

0

Actually Helen Toma's C to F formula will not work. The "+32" needs to be OUTSIDE the product part.
An easy mistake from trying to copy the other formula. (I did it myself too)
RR

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.