Here is what might help you : leave blank the text field which you want to be populated( leave blank fahrenheit if you want to convert from celsius to fahrenheit ).
@Override
public void actionPerformed(final ActionEvent e) {
double celsius = 0, fahrenheit = 0;
DecimalFormat twoDigits = new DecimalFormat("0.00");
if (Temperature_Converter.this.TFCelsius.getText() == null || "".equals(Temperature_Converter.this.TFCelsius.getText().trim())) {
// convert from fahrenheit to celsius
fahrenheit = Double.parseDouble(Temperature_Converter.this.TFFahrenheit.getText());
celsius = (fahrenheit - Temperature_Converter.offset) * Temperature_Converter.FahrenheitTOCelsius;
Temperature_Converter.this.TFCelsius.setText(" " + twoDigits.format(celsius));
} else if (Temperature_Converter.this.TFFahrenheit.getText() == null || "".equals(Temperature_Converter.this.TFFahrenheit.getText().trim())) {
// convert from celsius to fahrenheit
celsius = Double.parseDouble(Temperature_Converter.this.TFCelsius.getText());
fahrenheit = celsius * Temperature_Converter.CelsiusTOFarenheit + Temperature_Converter.offset;
Temperature_Converter.this.TFFahrenheit.setText(" " + twoDigits.format(fahrenheit));
}
}
Edit : You can validate the user input text and alert the user if there are something else then numbers introduced as a temperature.
try {
fahrenheit = Double.parseDouble(Temperature_Converter.this.TFFahrenheit.getText());
} catch (NumberFormatException e1) {
//alert the user
JOptionPane.showMessageDialog(null, "You are allowed to introduce numbers only for temperature");
return;
}