This program converts miles into kilometers. It provides a basic plan for making a program that, when a button is pressed, takes input from a field, computes a new value based on that, and puts the result in another field. Extending this program is the basis for many other examples. To customize it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
// GenericCalc.java - Input field, button, output field generic program.
// Fred Swartz, 2004-10-25
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
////////////////////////////////////////////////////// class GenericCalc
class GenericCalc {
//====================================================== method main
public static void main(String[] args) {
JFrame window = new GenericCalcGUI();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
/////////////////////////////////////////////////// class GenericCalcGUI
class GenericCalcGUI extends JFrame {
//=============================================== instance variables
private JTextField m_milesTf = new JTextField(10);
private JTextField m_kilometersTf = new JTextField(10);
private JButton m_convertBtn = new JButton("Convert");
//====================================================== constructor
public GenericCalcGUI() {
//... Add a listener to the button
m_convertBtn.addActionListener(new ConvertListener());
//... Create content panel, set layout, add components
JPanel content = new JPanel();
content.setLayout(new FlowLayout()); // use FlowLayout
content.add(new JLabel("Miles")); // create and add label
content.add(m_milesTf); // add input field
content.add(m_convertBtn); // add button
content.add(new JLabel("Kilometers")); // create and add label
content.add(m_kilometersTf); // add output field
//... Set window characteristics
this.setContentPane(content);
this.pack();
this.setTitle("Miles to Kilometers");
this.setResizable(false);
}//end constructor
///////////////////////////////////////// inner class ConvertListener
class ConvertListener implements ActionListener {
//============================================= actionPerformed
public void actionPerformed(ActionEvent e) {
// This only copies input field to output field.
String in = m_milesTf.getText(); // get input
double mi = Double.parseDouble(miles);
double km = convertMilesToKilometers(mi);
m_kilometersTf.setText("" + km); // set output
}
}//end class ConvertListener
//=========================================== convertMilesToKilometers
// Performing the pure logic of the program (often called the model)
// is typically done in a separate class.
// Here we only put it into a separate method.
// You might think this is too trivial to put into a method.
// Perhaps in this case, but it is a very good habit to
// acquire because in "real" programs there will be
// a big payoff in clarity.
public double convertMilesToKilometers(double miles) {
return mi * 1.62;
}
}//endclass GenericCalcGUI
|