import javax.swing.*; //swing class import java.awt.event.*; //for later, ActionListener Interface public class Ex30_KiloConverterWindow extends JFrame { private JPanel panel; private JLabel messageLabel; private JTextField kiloTextField; private JTextField outputTextField; private JButton calcButton; final int WINDOW_WIDTH = 310; final int WINDOW_HEIGHT = 130; //optional final int FROM_LEFT = 150; final int FROM_TOP = 100; public Ex30_KiloConverterWindow() { setTitle("Kilometer Converter"); //inherit from JFrame class, can call it as if it is written in this class setSize(WINDOW_WIDTH, WINDOW_HEIGHT); setLocation(FROM_LEFT, FROM_TOP); //optional setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); buildPanel(); //call method, build panel add(panel); setVisible(true); } private void buildPanel() //it is private, only methods in same class can call it { messageLabel = new JLabel("Enter a distance in kilometers"); //declared above kiloTextField = new JTextField(10); //width in column = 10 calcButton = new JButton("Calculate"); outputTextField = new JTextField(25); outputTextField.setHorizontalAlignment(JTextField.CENTER); outputTextField.setEditable(false); //later: add an action listener to the button calcButton.addActionListener(new CalcButtonListener()); panel = new JPanel(); panel.add(messageLabel); panel.add(kiloTextField); panel.add(outputTextField); panel.add(calcButton); } private class CalcButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { String input; double miles; input = kiloTextField.getText(); miles = Double.parseDouble(input) * 0.6214; outputTextField.setText(input + " KM is "+miles+ " miles."); //JOptionPane.showMessageDialog(null, input + " KM is "+miles+ " miles."); } } }