package com.rburgos.mastermindtestlayout; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import javax.swing.*; import javax.swing.border.*; @SuppressWarnings("serial") public class MainLayout extends JFrame { private JPanel mainPanel, topPanel, pegsLeftPanel, hintsRightPanel, bottomPanel; private JMenuBar menuBar; private JMenu gameMenu, helpMenu; private JMenuItem easyModeItem, advModeItem, instrItem, aboutItem; private String[] colors = {"#eccc75", "#72688c", "#f6a01a", "#116348", "#3b7e98", "#d53533", "#a36526", "#679317", "#ed9f9f", "#1be2b4"}; private ColorPeg peg1, peg2, peg3, peg4, peg5, peg6, peg7, peg8, peg9, peg10; private ColorPeg tempColorPeg; private DummyPeg tempDummyPeg; private GridBagConstraints dummyPegsConstraints; private int col = 0, row = 0; private ArrayList> initPegsArray = new ArrayList<>(); private ArrayList> guessPegsAray = new ArrayList<>(); private ArrayList answerPegsArray = new ArrayList<>(); public static void main(String[] args) { try { UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (Throwable e) { e.printStackTrace(); } EventQueue.invokeLater(new Runnable() { public void run() { try { MainLayout frame = new MainLayout(); frame.setLocationRelativeTo(null); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public MainLayout() { // Window setResizable(false); setTitle("MasterMind"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 500, 700); createMenu(); // Main panel: // Divided into "top" and "bottom" by topPanel and bottomPanel mainPanel = new JPanel(); mainPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(mainPanel); GridBagLayout gbl_contentPane = new GridBagLayout(); gbl_contentPane.columnWidths = new int[]{0}; gbl_contentPane.rowHeights = new int[]{591, 0, 0}; gbl_contentPane.columnWeights = new double[]{1.0}; gbl_contentPane.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; mainPanel.setLayout(gbl_contentPane); topPanel = new JPanel(); GridBagConstraints gbc_topPanel = new GridBagConstraints(); gbc_topPanel.insets = new Insets(0, 0, 5, 0); gbc_topPanel.fill = GridBagConstraints.BOTH; gbc_topPanel.gridx = 0; gbc_topPanel.gridy = 0; mainPanel.add(topPanel, gbc_topPanel); GridBagLayout gbl_topPanel = new GridBagLayout(); gbl_topPanel.columnWidths = new int[]{0, 0, 0}; gbl_topPanel.rowHeights = new int[]{0, 0}; gbl_topPanel.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; gbl_topPanel.rowWeights = new double[]{1.0, Double.MIN_VALUE}; topPanel.setLayout(gbl_topPanel); pegsLeftPanel = new JPanel(); pegsLeftPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); GridBagConstraints gbc_pegsLeftPanel = new GridBagConstraints(); gbc_pegsLeftPanel.anchor = GridBagConstraints.NORTH; gbc_pegsLeftPanel.fill = GridBagConstraints.BOTH; gbc_pegsLeftPanel.gridx = 0; gbc_pegsLeftPanel.gridy = 0; topPanel.add(pegsLeftPanel, gbc_pegsLeftPanel); GridBagLayout gbl_pegsLeftPanel = new GridBagLayout(); gbl_pegsLeftPanel.columnWidths = new int[] {0}; gbl_pegsLeftPanel.rowHeights = new int[] {30}; gbl_pegsLeftPanel.columnWeights = new double[]{0.0}; gbl_pegsLeftPanel.rowWeights = new double[]{0.0}; pegsLeftPanel.setLayout(gbl_pegsLeftPanel); dummyPegsConstraints = new GridBagConstraints(); dummyPegsConstraints.insets = new Insets(2, 3, 2, 3); createDummyPegs(); hintsRightPanel = new JPanel(); hintsRightPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); GridBagConstraints gbc_hintsRightPanel = new GridBagConstraints(); gbc_hintsRightPanel.fill = GridBagConstraints.BOTH; gbc_hintsRightPanel.gridx = 1; gbc_hintsRightPanel.gridy = 0; topPanel.add(hintsRightPanel, gbc_hintsRightPanel); bottomPanel = new JPanel(); bottomPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); GridBagConstraints gbc_bottomPanel = new GridBagConstraints(); gbc_bottomPanel.fill = GridBagConstraints.BOTH; gbc_bottomPanel.gridx = 0; gbc_bottomPanel.gridy = 1; mainPanel.add(bottomPanel, gbc_bottomPanel); peg1 = new ColorPeg(Color.decode(colors[0])); peg2 = new ColorPeg(Color.decode(colors[1])); peg3 = new ColorPeg(Color.decode(colors[2])); peg4 = new ColorPeg(Color.decode(colors[3])); peg5 = new ColorPeg(Color.decode(colors[4])); peg6 = new ColorPeg(Color.decode(colors[5])); peg7 = new ColorPeg(Color.decode(colors[6])); peg8 = new ColorPeg(Color.decode(colors[7])); peg9 = new ColorPeg(Color.decode(colors[8])); peg10 = new ColorPeg(Color.decode(colors[9])); peg1.addMouseListener(new PegListener()); peg2.addMouseListener(new PegListener()); peg3.addMouseListener(new PegListener()); peg4.addMouseListener(new PegListener()); peg5.addMouseListener(new PegListener()); peg6.addMouseListener(new PegListener()); peg7.addMouseListener(new PegListener()); peg8.addMouseListener(new PegListener()); peg9.addMouseListener(new PegListener()); peg10.addMouseListener(new PegListener()); bottomPanel.setLayout(new GridLayout(0, 10, 0, 0)); bottomPanel.add(peg1); bottomPanel.add(peg2); bottomPanel.add(peg3); bottomPanel.add(peg4); bottomPanel.add(peg5); bottomPanel.add(peg6); bottomPanel.add(peg7); bottomPanel.add(peg8); bottomPanel.add(peg9); bottomPanel.add(peg10); } private void createMenu() { menuBar = new JMenuBar(); menuBar.setBorderPainted(false); setJMenuBar(menuBar); gameMenu = new JMenu("Game"); menuBar.add(gameMenu); easyModeItem = new JMenuItem("Easy Mode"); gameMenu.add(easyModeItem); advModeItem = new JMenuItem("Advanced Mode"); gameMenu.add(advModeItem); helpMenu = new JMenu("Help"); menuBar.add(helpMenu); instrItem = new JMenuItem("Instruction"); helpMenu.add(instrItem); aboutItem = new JMenuItem("About..."); helpMenu.add(aboutItem); } public void createDummyPegs() { for (int i = 0; i < 13; i++) { initPegsArray.add(new ArrayList<>()); dummyPegsConstraints.gridy = i; for (int j = 0; j < 5; j++) { dummyPegsConstraints.gridx = j; if (i == 0) { tempColorPeg = new ColorPeg(Color.DARK_GRAY); initPegsArray.get(i).add(j, tempColorPeg); pegsLeftPanel.add((JComponent) initPegsArray.get(i).get(j), dummyPegsConstraints); } else { tempDummyPeg = new DummyPeg(); initPegsArray.get(i).add(j, tempDummyPeg); pegsLeftPanel.add((JComponent) initPegsArray.get(i).get(j), dummyPegsConstraints); } } } } public void updatePegs() { pegsLeftPanel.removeAll(); for (int i = 0; i < 13; i++) { dummyPegsConstraints.gridy = i; for (int j = 0; j < 5; j++) { dummyPegsConstraints.gridx = j; pegsLeftPanel.add((JComponent) initPegsArray.get(i).get(j), dummyPegsConstraints); pegsLeftPanel.repaint(); } } System.out.println(initPegsArray.get(1).get(0)); System.out.println(initPegsArray.get(0).get(0)); } class PegListener extends MouseAdapter { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); if (e.getComponent().equals(peg1)) { tempColorPeg = new ColorPeg(peg1.getColor()); System.out.println("peg1 clicked"); System.out.println("tempColorPeg: " + tempColorPeg.getColor()); initPegsArray.get(1).remove(0); initPegsArray.get(1).add(0, tempColorPeg); System.out.println(initPegsArray.get(0).get(0)); } else if (e.getComponent().equals(peg2)) { tempColorPeg = new ColorPeg(peg2.getColor()); System.out.println("peg2 clicked"); System.out.println("tempColorPeg: " + tempColorPeg.getColor()); initPegsArray.get(1).remove(1); initPegsArray.get(1).add(1, tempColorPeg); } else if (e.getComponent().equals(peg3)) { System.out.println("peg3 clicked"); } else if (e.getComponent().equals(peg4)) { System.out.println("peg4 clicked"); } else if (e.getComponent().equals(peg5)) { System.out.println("peg5 clicked"); } else if (e.getComponent().equals(peg6)) { System.out.println("peg6 clicked"); } else if (e.getComponent().equals(peg7)) { System.out.println("peg7 clicked"); } else if (e.getComponent().equals(peg8)) { System.out.println("peg8 clicked"); } else if (e.getComponent().equals(peg9)) { System.out.println("peg9 clicked"); } else if (e.getComponent().equals(peg10)) { System.out.println("peg10 clicked"); } updatePegs(); } } }