college/ss2010/gdi2/java/libs/acm/demo/TempConvUsingInnerClasses.java
2013-12-19 19:05:28 +01:00

65 lines
2.0 KiB
Java

/*
* File: TempConvUsingInnerClasses.java
* ------------------------------------
* This program allows users to convert temperatures back
* and forth from Fahrenheit to Celsius. This version uses
* anonymous inner classes to specify the action listeners.
*/
import acm.gui.*;
import acm.program.*;
import java.awt.event.*;
import javax.swing.*;
/** This class implements a simple temperature converter */
public class TempConvUsingInnerClasses extends Program {
/** Initialize the graphical user interface */
public void init() {
setLayout(new TableLayout(2, 3));
fahrenheitField = new IntField(32);
celsiusField = new IntField(0);
ActionListener convertFToC = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int f = fahrenheitField.getValue();
int c = (int) Math.round( (5.0 / 9.0) * (f - 32) );
celsiusField.setValue(c);
}
};
ActionListener convertCToF = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int c = celsiusField.getValue();
int f = (int) Math.round( (9.0 / 5.0) * c + 32 );
fahrenheitField.setValue(f);
}
};
JButton convertFToCButton = new JButton("F -> C");
JButton convertCToFButton = new JButton("C -> F");
fahrenheitField.addActionListener(convertFToC);
celsiusField.addActionListener(convertCToF);
convertFToCButton.addActionListener(convertFToC);
convertCToFButton.addActionListener(convertCToF);
add(new JLabel("Degrees Fahrenheit"));
add(fahrenheitField);
add(convertFToCButton);
add(new JLabel("Degrees Celsius"));
add(celsiusField);
add(convertCToFButton);
}
/* 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 TempConvUsingInnerClasses().start(args);
}
}