Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

GameOfLifeGUI.java

Blame
  • Forked from DAS Shantanu / Prog2Aix-tp3
    2 commits ahead of the upstream repository.
    user avatar
    Alexis Nasr authored
    adb13dc8
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    GameOfLifeGUI.java 1.52 KiB
    import java.awt.*;
    import java.awt.Graphics;
    import javax.swing.*;
    
    public class GameOfLifeGUI extends JFrame {
        private int squareSize = 7;
        private int numberOfRows;
        private int numberOfColumns;
        private JLabel[][] labelGrid;
        private GridLayout gridLayout;
        private JPanel gridPanel;
        private JFrame frame;
        
        public GameOfLifeGUI(Grid g) {
    	this.numberOfRows = g.getNumberOfRows();
    	this.numberOfColumns = g.getNumberOfColumns();
    	gridLayout = new GridLayout(numberOfRows, numberOfColumns);
            gridPanel = new JPanel(gridLayout);
    	labelGrid = new JLabel[numberOfRows][numberOfColumns];
            for (int x = 0; x < numberOfColumns; x++)
                for (int y = 0; y < numberOfRows; y++){
    		labelGrid[x][y] = new JLabel("*");
    		JLabel label;
    		if(g.getCell(x,y).isAlive())
    		   labelGrid[x][y].setForeground(Color.red);
    		else
    		    labelGrid[x][y].setForeground(Color.white);
    		gridPanel.add(labelGrid[x][y]);
    	    }
            frame = new JFrame("Game of Life");
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.setContentPane(gridPanel);
    	frame.setSize(squareSize * numberOfRows, squareSize * numberOfColumns);
    	frame.setLocationByPlatform(true);
            frame.setVisible(true);
        }
    
        public void update(Grid g){
            for (int x = 0; x < numberOfColumns; x++)
                for (int y = 0; y < numberOfRows; y++){
    		JLabel label = labelGrid[x][y];
    		if(g.getCell(x,y).isAlive())
    		    label.setForeground(Color.red);
    		else
    		    label.setForeground(Color.white);
    	    }
        }
    }