//import javafx.scene.control.ToggleGroup; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class GameBoard extends JPanel { // Funktionshilfen //int semesterCounter = 1; //TODO: ersetzen durch param von vorpanel // Grafiken ImageIcon backButtonIcon = new ImageIcon("graphics/backButton.png"); ImageIcon gameBoardEmtpy = new ImageIcon("graphics/gameboardempty.png"); ImageIcon gameBoardX = new ImageIcon("graphics/gameboardx.png"); // Labels JLabel frameTitle = new JLabel("GameBoard"); JLabel kontextText = new JLabel("Beispielhafter Kontext-Text"); //kontextText.setFont(new Font("Roboto", Font.BOLD, 24)); //TODO setFont fixen JButton backButton = new JButton(backButtonIcon); // Eigene ModulButtons JToggleButton leftPlayerModul1 = new JToggleButton("Modul 1"); //TODO: Dynamische Namen durch abgleich mit Semester JToggleButton leftPlayerModul2 = new JToggleButton("Modul 2"); JToggleButton leftPlayerModul3 = new JToggleButton("Modul 3"); JToggleButton leftPlayerModul4 = new JToggleButton("Modul 4"); JToggleButton leftPlayerModul5 = new JToggleButton("Modul 5"); JToggleButton leftPlayerModul6 = new JToggleButton("Modul 6"); JToggleButton leftPlayerModul7 = new JToggleButton("Reset"); // Gegnerische ModulButtons JToggleButton rightPlayerModul1 = new JToggleButton("Modul 1"); JToggleButton rightPlayerModul2 = new JToggleButton("Modul 2"); JToggleButton rightPlayerModul3 = new JToggleButton("Modul 3"); JToggleButton rightPlayerModul4 = new JToggleButton("Modul 4"); JToggleButton rightPlayerModul5 = new JToggleButton("Modul 5"); JToggleButton rightPlayerModul6 = new JToggleButton("Modul 6"); JToggleButton rightPlayerModul7 = new JToggleButton("Bereit"); public void buildPanel(MainFrame frame, int semesterCounter) { // Hauptlayout - BorderLayout für die Anordnung der Komponenten setLayout(new BorderLayout()); // Panel für das Kontext-Text-Feld JPanel headerPanel = new JPanel(); headerPanel.setLayout(new BorderLayout()); headerPanel.add(kontextText, BorderLayout.WEST); headerPanel.add(backButton, BorderLayout.EAST); // Panel für die Buttons des linken Spielers (ganz links) JPanel leftButtonsPanel = new JPanel(); leftButtonsPanel.setLayout(new GridLayout(7, 1)); // 6 Buttons untereinander leftButtonsPanel.add(leftPlayerModul1); leftButtonsPanel.add(leftPlayerModul2); leftButtonsPanel.add(leftPlayerModul3); leftButtonsPanel.add(leftPlayerModul4); leftButtonsPanel.add(leftPlayerModul5); leftButtonsPanel.add(leftPlayerModul6); leftButtonsPanel.add(leftPlayerModul7); // Panel für die Buttons des rechten Spielers (ganz rechts) JPanel rightButtonsPanel = new JPanel(); rightButtonsPanel.setLayout(new GridLayout(7, 1)); // 6 Buttons untereinander rightButtonsPanel.add(rightPlayerModul1); rightButtonsPanel.add(rightPlayerModul2); rightButtonsPanel.add(rightPlayerModul3); rightButtonsPanel.add(rightPlayerModul4); rightButtonsPanel.add(rightPlayerModul5); rightButtonsPanel.add(rightPlayerModul6); rightButtonsPanel.add(rightPlayerModul7); // Spielfelder erstellen (eigenes und gegnerisches) int gridSize = GameController.semesterToBoardSize(semesterCounter); // Größe des Spielfelds // Spielfelder werden in BoardDisplay erstellt //JPanel ownBoardPanel = new JPanel(new GridLayout(gridSize, gridSize)); //JPanel opponentBoardPanel = new JPanel(new GridLayout(gridSize, gridSize)); JPanel ownBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); JPanel opponentBoardPanel = new BoardDisplay(gridSize, gameBoardEmtpy); //Buttons in eine Gruppe packen damit diese beim drücken eines anderen Buttons wieder entwählt werden ButtonGroup leftButtonGroup= new ButtonGroup(); leftButtonGroup.add(rightPlayerModul1); leftButtonGroup.add(rightPlayerModul2); leftButtonGroup.add(rightPlayerModul3); leftButtonGroup.add(rightPlayerModul4); leftButtonGroup.add(rightPlayerModul5); leftButtonGroup.add(rightPlayerModul6); leftButtonGroup.add(rightPlayerModul7); ButtonGroup rightButtonGroup= new ButtonGroup(); rightButtonGroup.add(leftPlayerModul1); rightButtonGroup.add(leftPlayerModul2); rightButtonGroup.add(leftPlayerModul3); rightButtonGroup.add(leftPlayerModul4); rightButtonGroup.add(leftPlayerModul5); rightButtonGroup.add(leftPlayerModul6); rightButtonGroup.add(leftPlayerModul7); // Panel für beide Spielfelder (nebeneinander in der Mitte) JPanel centerPanel = new JPanel(); centerPanel.setLayout(new GridLayout(1, 2, 20, 0)); // 2 Spielfelder nebeneinander, mit Abstand von 20 Pixeln centerPanel.add(ownBoardPanel); centerPanel.add(opponentBoardPanel); // Panels dem Hauptlayout hinzufügen add(leftButtonsPanel, BorderLayout.WEST); add(rightButtonsPanel, BorderLayout.EAST); add(headerPanel, BorderLayout.NORTH); add(centerPanel, BorderLayout.CENTER); } GameBoard(MainFrame frame, int semesterCounter,Player p1, Player p2) { buildPanel(frame, semesterCounter); /* rightPlayerRightButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { toggleRightPlayerIcon(); updateTextFields(); } }); */ backButton.addActionListener(e -> frame.showPanel("MainMenu")); } }