package testing; import gameElements.Grid; import graphicsElements.GridComponent; import java.awt.GridLayout; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Scanner; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.JSlider; import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class GameOfLife_graphics { public static void main(String args []) { JFrame frame = new JFrame("The Game of Life"); int sideDimension; int sizeConstant; sideDimension = Integer.parseInt(JOptionPane.showInputDialog( null, "Enter side dimension:", "Welcome to The Game of Life!", JOptionPane.PLAIN_MESSAGE)); sizeConstant = Integer.parseInt(JOptionPane.showInputDialog( null, "Enter size constant:", "Welcome to The Game of Life!", JOptionPane.PLAIN_MESSAGE)); final Grid g = new Grid(sideDimension); final GridComponent grid = new GridComponent(g, sizeConstant); ////Glider Test: //g.changeState(2, 1); //g.changeState(3, 2); //g.changeState(3, 3); //g.changeState(2, 3); //g.changeState(1, 3); JButton nextGen = new JButton("Next Generation"); class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent event) { g.nextGeneration(); grid.repaint(); } } ActionListener listener1 = new ButtonListener(); nextGen.addActionListener(listener1); JPanel bottomPanel = new JPanel(); bottomPanel.setLayout(new GridLayout(3,1)); final JSlider boxSizeSlider = new JSlider(0, 50, sizeConstant); class SizeListener implements ChangeListener { public void stateChanged(ChangeEvent event) { grid.setBoxSize(boxSizeSlider.getValue()); grid.repaint(); } } ChangeListener listener2 = new SizeListener(); boxSizeSlider.addChangeListener(listener2); final JLabel boxSizeNum = new JLabel("Box Size" + Integer.toString(sizeConstant)); boxSizeNum.setHorizontalAlignment(SwingConstants.LEFT); class LabelListener implements ChangeListener { public void stateChanged(ChangeEvent event) { boxSizeNum.setText("Box Size: " + boxSizeSlider.getValue()); } } ChangeListener listener3 = new LabelListener(); boxSizeSlider.addChangeListener(listener3); bottomPanel.add(boxSizeNum); bottomPanel.add(boxSizeSlider); bottomPanel.add(nextGen); final int FRAME_HEIGHT = 700; final int FRAME_WIDTH = 700; frame.add(grid, BorderLayout.CENTER); frame.add(bottomPanel, BorderLayout.SOUTH); addMenuBar(frame, g, grid); frame.setBounds(0, 0, FRAME_WIDTH, FRAME_HEIGHT); frame.setVisible(true); frame.setAlwaysOnTop(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void addMenuBar(JFrame window, final Grid g, final GridComponent grid) { JMenuBar mainMenu = new JMenuBar(); JMenu file = new JMenu("File"); JMenuItem reset = new JMenuItem("Reset"); JMenuItem exit = new JMenuItem("Exit"); exit.setFocusable(true); exit.setFocusable(true); class exitListener implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(-1); } } ActionListener quit = new exitListener(); exit.addActionListener(quit); class resetListener implements ActionListener { public void actionPerformed(ActionEvent e) { g.redefine(Integer.parseInt(JOptionPane.showInputDialog( null, "Enter side dimension:", "Define new grid...", JOptionPane.PLAIN_MESSAGE))); grid.repaint(); } } ActionListener resetGrid = new resetListener(); reset.addActionListener(resetGrid); file.add(reset); file.add(exit); mainMenu.add(file); window.add(mainMenu, BorderLayout.NORTH); } }