import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class GrowthGUI extends JFrame { // fields JLabel labelBirth = new JLabel("Birth rate: "); JLabel labelDeath = new JLabel("Death rate: "); JLabel labelYears = new JLabel("Number of years: "); JLabel labelPop = new JLabel("Initial Population: "); JLabel labelNewPop = new JLabel("New Population: "); JTextField fieldBirth = new JTextField(); JTextField fieldDeath = new JTextField(); JTextField fieldYears = new JTextField(); JTextField fieldPop = new JTextField(); JTextField fieldNewPop = new JTextField(); JButton go = new JButton("Go"); // inner class class HandlerGo implements ActionListener { public void actionPerformed(ActionEvent arg0) { try { double birth = Double.parseDouble(fieldBirth.getText()); double death = Double.parseDouble(fieldDeath.getText()); double oldPop = Double.parseDouble(fieldPop.getText()); int years = Integer.parseInt(fieldYears.getText()); // compute new population double newPop = Growth.getNewPop(birth, death, oldPop, years); // produce output fieldNewPop.setText(String.valueOf(newPop)); } catch(Exception e) { JOptionPane.showMessageDialog(null, "Error: " + e.getMessage()); } } } // constructor public GrowthGUI() { super("Population Predictor"); JPanel data = new JPanel(new GridLayout(5, 2)); data.add(labelBirth); data.add(fieldBirth); data.add(labelDeath); data.add(fieldDeath); data.add(labelYears); data.add(fieldYears); data.add(labelPop); data.add(fieldPop); data.add(labelNewPop); data.add(fieldNewPop); getContentPane().setLayout(new BorderLayout()); getContentPane().add("Center", data); getContentPane().add("South", go); go.addActionListener(new HandlerGo()); pack(); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } // methods // main public static void main(String args[]) { GrowthGUI g = new GrowthGUI(); } }