package temperature;
// This class implements a Celsius-Fahrenheit converter
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Temperature extends JFrame implements ActionListener
{
private JTextField displayF, displayC;
// Constructor
public Temperature()
{
Container c = getContentPane();
c.setLayout(new GridLayout(2, 2, 10, 0));
c.add(new JLabel(" Fahrenheit:"));
c.add(new JLabel(" Celsius:"));
displayF = new JTextField(6);
displayF.setBackground(Color.YELLOW);
displayF.addActionListener(this);
c.add(displayF);
displayC = new JTextField(6);
displayC.setBackground(Color.YELLOW);
displayC.addActionListener(this);
c.add(displayC);
}
// Invoked when <Enter> is pressed
public void actionPerformed(ActionEvent e)
{
FCConverter fc = new FCConverter();
if ((JTextField)e.getSource() == displayF)
{
// Fahrenheit to Celsius
double degrees = stringToDouble(displayF.getText());
if (!Double.isNaN(degrees))
{
fc.setFahrenheit(degrees);
degrees = fc.getCelsius();
displayC.setText(String.format("%1.1f", degrees));
}
else
{
displayF.selectAll();
}
}
else
{
// Celsius to Fahrenheit
double degrees = stringToDouble(displayC.getText());
if (!Double.isNaN(degrees))
{
fc.setCelsius(degrees);
degrees = fc.getFahrenheit();
displayF.setText(String.format("%1.1f", degrees));
}
else
{
displayC.selectAll();
}
}
}
// Extracts a double value from a string
private double stringToDouble(String s)
{
double degrees;
try
{
degrees = Double.parseDouble(s);
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null,
"Invalid Input", "Error", JOptionPane.ERROR_MESSAGE);
degrees = Double.NaN;
}
return degrees;
}
// **********************************************************************
public static void main(String[] args)
{
Temperature window = new Temperature();
window.setBounds(300, 300, 200, 80);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
window.setVisible(true);
}
}