I need to create a Java Temperature converter. I have everthing working except when I try to convert F to C I get nothing except the value in F field is changed to 32. The conversion for C to F is working fine. Any ideas what it coudl be??
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.JOptionPane;
public class Converter extends JFrame {
//create fields for input
private JTextField jtfCelsius= new JTextField("0");
private JTextField jtfFarenheit= new JTextField("0");
private convert convert=new convert();
//create calculate button
private JButton jbtConvert=new JButton("Convert");
public Converter() {
//panel p1 holds labels n text fields
JPanel p1=new JPanel(new GridLayout(5,2));
p1.add(new JLabel("Temperature in Celsius"));
p1.add(jtfCelsius);
p1.add(new JLabel("Temperature in Farenheit"));
p1.add(jtfFarenheit);
p1.setBorder(new
TitledBorder("Enter Temperature"));
//Panel to hold button
JPanel p2=new JPanel(new FlowLayout(FlowLayout.RIGHT));
p2.add(jbtConvert);
add(p1, BorderLayout.CENTER);
add(p2, BorderLayout.SOUTH);
jbtConvert.addActionListener(new ButtonListener());
}
public class ButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (jtfCelsius.getText().equals(null)) {
try {
double fTemp = new Double(jtfFarenheit.getText());
double cTemp = convert.f2c(fTemp);
jtfCelsius.setText("" + cTemp);
} catch(NumberFormatException nfe) {
JOptionPane.showMessageDialog(Converter.this, "Error, input must be numerical");
}
} else {
try {
double cTemp = new Double(jtfCelsius.getText());
double fTemp = convert.c2f(cTemp);
jtfFarenheit.setText("" + fTemp);
} catch(NumberFormatException nfe) {
JOptionPane.showMessageDialog(Converter.this, "Error, input must be numerical");
}
}
}
}
public static void main(String[] args) {
Converter frame = new Converter();
frame.pack();
frame.setTitle("Temperature Converter");
frame.setLocationRelativeTo(null); // Center the frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(300,210);
frame.setResizable(false);
}
}
public class convert {
public double c2f(double temp) {
return 1.8 * temp + 32;
}
/**
* converts Fahrenheit temperatures to Celsius
* @param temp temperature in degrees Fahrenheit
* @returns temperature in degrees Celsius
*/
public double f2c(double temp) {
return .556 * (temp - 32);
}
}