import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PrimeGUI extends JFrame implements ActionListener { private NumberGenerator generator; private JLabel maximumValueJLabel, primeValuesJLabel; private JTextField maximumValueJTextField; private JButton calculateJButton; private JTextArea primesJTextArea; private JScrollPane primesJScrollPane; private JPanel upperJPanel; private JPanel middleJPanel; private JPanel lowerJPanel; public PrimeGUI(NumberGenerator generator) { this.generator = generator; setUpInterface(); } public void setUpInterface() { Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); // create upper panel maximumValueJLabel = new JLabel("Maximum Value:"); maximumValueJTextField = new JTextField(5); upperJPanel = new JPanel(); upperJPanel.add(maximumValueJLabel); upperJPanel.add(maximumValueJTextField); contentPane.add(upperJPanel, BorderLayout.NORTH); // create the middle panel calculateJButton = new JButton("Calculate Primes"); middleJPanel = new JPanel(); middleJPanel.add(calculateJButton); contentPane.add(middleJPanel, BorderLayout.CENTER); // create the lower panel primeValuesJLabel = new JLabel("Primes Values for specified Maximum:"); primeValuesJLabel.setHorizontalAlignment(JLabel.CENTER); primesJTextArea = new JTextArea(); primesJTextArea.setEditable(false); primesJTextArea.setLineWrap(true); primesJScrollPane = new JScrollPane(primesJTextArea); primesJScrollPane.setPreferredSize(new Dimension(100,100)); lowerJPanel = new JPanel(); lowerJPanel.setLayout(new GridLayout(2,1)); lowerJPanel.add(primeValuesJLabel); lowerJPanel.add(primesJScrollPane); contentPane.add(lowerJPanel, BorderLayout.SOUTH); // set up listener calculateJButton.addActionListener(this); // final setup setTitle("Prime Numbers Generator"); setSize(500, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent e) { int maximum, lineBreak = 25; maximum = Integer.parseInt(maximumValueJTextField.getText()); int[] result = generator.getValues(maximum); primesJTextArea.setText(""); // display results for (int i=0; i