62 lines
1.7 KiB
Java
62 lines
1.7 KiB
Java
/*
|
|
* File: TemperatureConverter.java
|
|
* -------------------------------
|
|
* This program allows users to convert temperatures
|
|
* back and forth from Fahrenheit to Celsius.
|
|
*/
|
|
|
|
import acm.gui.*;
|
|
import acm.program.*;
|
|
import java.awt.event.*;
|
|
import javax.swing.*;
|
|
|
|
public class TemperatureConverter extends Program {
|
|
|
|
/** Initialize the graphical user interface */
|
|
public void init() {
|
|
setLayout(new TableLayout(2, 3));
|
|
fahrenheitField = new IntField(32);
|
|
fahrenheitField.setActionCommand("F -> C");
|
|
fahrenheitField.addActionListener(this);
|
|
celsiusField = new IntField(0);
|
|
celsiusField.setActionCommand("C -> F");
|
|
celsiusField.addActionListener(this);
|
|
add(new JLabel("Degrees Fahrenheit"));
|
|
add(fahrenheitField);
|
|
add(new JButton("F -> C"));
|
|
add(new JLabel("Degrees Celsius"));
|
|
add(celsiusField);
|
|
add(new JButton("C -> F"));
|
|
addActionListeners();
|
|
}
|
|
|
|
/** Listen for a button action */
|
|
public void actionPerformed(ActionEvent e) {
|
|
String cmd = e.getActionCommand();
|
|
if (cmd.equals("F -> C")) {
|
|
int f = fahrenheitField.getValue();
|
|
int c = (int) Math.round( (5.0 / 9.0) * (f - 32) );
|
|
celsiusField.setValue(c);
|
|
} else if (cmd.equals("C -> F")) {
|
|
int c = celsiusField.getValue();
|
|
int f = (int) Math.round( (9.0 / 5.0) * c + 32 );
|
|
fahrenheitField.setValue(f);
|
|
}
|
|
}
|
|
|
|
/* Private instance variables */
|
|
|
|
private IntField fahrenheitField;
|
|
private IntField celsiusField;
|
|
|
|
/** Set the program dimensions */
|
|
public static final int APPLICATION_WIDTH = 300;
|
|
public static final int APPLICATION_HEIGHT = 200;
|
|
|
|
/* Standard Java entry point */
|
|
/* This method can be eliminated in most Java environments */
|
|
public static void main(String[] args) {
|
|
new TemperatureConverter().start(args);
|
|
}
|
|
}
|