diff --git a/.classpath b/.classpath
index fe27910..e571fe4 100644
--- a/.classpath
+++ b/.classpath
@@ -36,5 +36,7 @@
+
+
diff --git a/com.jgoodies.common_1.8.1.v20240327-0800.jar b/com.jgoodies.common_1.8.1.v20240327-0800.jar
new file mode 100644
index 0000000..6b4f411
Binary files /dev/null and b/com.jgoodies.common_1.8.1.v20240327-0800.jar differ
diff --git a/com.jgoodies.forms_1.9.0.v20240327-0800.jar b/com.jgoodies.forms_1.9.0.v20240327-0800.jar
new file mode 100644
index 0000000..794de8e
Binary files /dev/null and b/com.jgoodies.forms_1.9.0.v20240327-0800.jar differ
diff --git a/src/main/java/de/mannheim/th/chess/App.java b/src/main/java/de/mannheim/th/chess/App.java
index f5a76cc..1e90163 100644
--- a/src/main/java/de/mannheim/th/chess/App.java
+++ b/src/main/java/de/mannheim/th/chess/App.java
@@ -1,6 +1,9 @@
package de.mannheim.th.chess;
-import de.mannheim.th.chess.ui.Ui;
+import de.mannheim.th.chess.ui.MainFrame;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* Eine einfache Schach App mithilfe von {@linkplain https://github.com/bhlangonijr/chesslib} entwickelt.
@@ -9,13 +12,15 @@ import de.mannheim.th.chess.ui.Ui;
*/
public class App {
- private static Ui userinterface;
+ private static final Logger logger = LogManager.getLogger(App.class);
+
+ private static MainFrame userinterface;
/**
* Main-Methode.
* @param args
*/
public static void main(String[] args) {
- System.out.println("Hello World!");
- userinterface = new Ui();
+ logger.info("Hello World.");
+ userinterface = new MainFrame();
}
}
diff --git a/src/main/java/de/mannheim/th/chess/ui/MainFrame.java b/src/main/java/de/mannheim/th/chess/ui/MainFrame.java
index 5203688..0f25218 100644
--- a/src/main/java/de/mannheim/th/chess/ui/MainFrame.java
+++ b/src/main/java/de/mannheim/th/chess/ui/MainFrame.java
@@ -7,17 +7,27 @@ import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+
import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.util.ArrayList;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
+import javax.swing.JFileChooser;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.Color;
public class MainFrame extends JFrame {
+
+ private ArrayList spiele = new ArrayList<>();
private static final long serialVersionUID = 1L;
private JPanel contentPane;
@@ -25,36 +35,38 @@ public class MainFrame extends JFrame {
/**
* Launch the application.
*/
-// public static void main(String[] args) {
-// EventQueue.invokeLater(new Runnable() {
-// public void run() {
-// try {
-// MainFrame frame = new MainFrame();
-// frame.setVisible(true);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-// });
-// }
+ public static void main(String[] args) {
+ EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ try {
+ MainFrame frame = new MainFrame();
+ frame.setVisible(true);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
/**
* Create the frame.
*/
public MainFrame() {
- setBackground(Color.WHITE);
- setResizable(false);
+ setBackground(Color.LIGHT_GRAY);
+ setResizable(true);
setAlwaysOnTop(true);
setTitle("Schach");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 500);
+
contentPane = new JPanel();
contentPane.setBackground(Color.GRAY);
contentPane.setForeground(Color.GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
+
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
contentPane.add(Box.createVerticalStrut(10));
@@ -78,6 +90,17 @@ public class MainFrame extends JFrame {
btnNewButton.setForeground(Color.BLACK);
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16));
btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT);
+ btnNewButton.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+
+ SpielFrame sp = new SpielFrame();
+ spiele.add(sp);
+
+ }
+
+ });
contentPane.add(btnNewButton);
contentPane.add(Box.createVerticalStrut(15));
@@ -87,6 +110,24 @@ public class MainFrame extends JFrame {
btnNewButton_1.setForeground(Color.BLACK);
btnNewButton_1.setFont(new Font("Tahoma", Font.BOLD, 16));
btnNewButton_1.setAlignmentX(Component.CENTER_ALIGNMENT);
+ btnNewButton_1.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser dateiWaehler = new JFileChooser();
+ JFrame jfFile = new JFrame();
+ int auswahl = dateiWaehler.showOpenDialog(jfFile);
+
+ if (auswahl == JFileChooser.APPROVE_OPTION) {
+ File ausgewaehlteDatei = dateiWaehler.getSelectedFile();
+ JOptionPane.showMessageDialog(jfFile,"Gewählte Datei:\n" + ausgewaehlteDatei.getAbsolutePath());
+
+ //Uebergabe zu Logik zum extrahieren der Daten
+ }
+ }
+
+ });
+
contentPane.add(btnNewButton_1);
contentPane.add(Box.createVerticalStrut(15));
@@ -96,7 +137,16 @@ public class MainFrame extends JFrame {
btnNewButton_2.setForeground(Color.BLACK);
btnNewButton_2.setFont(new Font("Tahoma", Font.BOLD, 16));
btnNewButton_2.setAlignmentX(Component.CENTER_ALIGNMENT);
- contentPane.add(btnNewButton_2);
+ btnNewButton_2.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ System.exit(0);
+ }
+
+ });
+
+ contentPane.add(btnNewButton_2);
+ setVisible(true);
}
}
diff --git a/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java b/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java
new file mode 100644
index 0000000..a34c04e
--- /dev/null
+++ b/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java
@@ -0,0 +1,97 @@
+package de.mannheim.th.chess.ui;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import de.mannheim.th.chess.App;
+
+import java.awt.EventQueue;
+import java.awt.Font;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.util.ArrayList;
+import java.awt.GridLayout;
+
+public class SpielFrame extends JFrame {
+
+ private static final Logger logger = LogManager.getLogger(App.class);
+
+ private static final long serialVersionUID = 1L;
+ private JPanel contentPane;
+ private ArrayList buttons = new ArrayList<>();
+ private JPanel panelLinks, panelRechts;
+
+ /**
+ * Launch the application.
+ */
+ public static void main(String[] args) {
+ EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ try {
+ SpielFrame frame = new SpielFrame();
+ frame.setVisible(true);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
+ /**
+ * Create the frame.
+ */
+ public SpielFrame() {
+
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setBounds(100, 100, 1920, 1080);
+ setTitle("Spiel");
+
+ JPanel contentPane = new JPanel();
+ contentPane.setLayout(new BorderLayout());
+ setContentPane(contentPane);
+
+ // Linkes Panel mit GridLayout 8x8 für Schachbrett
+ panelLinks = new JPanel(new GridLayout(8, 8));
+
+ erstelleBrett();
+
+ // Rechtes Panel für Steuerung oder zusätzliche Eingaben
+ panelRechts = new JPanel();
+ panelRechts.setBackground(Color.LIGHT_GRAY);
+
+ // JSplitPane horizontal (linke und rechte Hälfte)
+ JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panelLinks, panelRechts);
+ splitPane.setResizeWeight(0.70);
+ splitPane.setDividerSize(5);
+ splitPane.setEnabled(false);
+
+ contentPane.add(splitPane, BorderLayout.CENTER);
+ setVisible(true);
+ }
+
+ private void erstelleBrett() {
+ for (int i = 0; i < 64; i++) {
+ JButton b = new JButton();
+ b.setFocusPainted(false);
+ b.setFont(new Font("Arial", Font.PLAIN, 30));
+
+ if ((i / 8 + i % 8) % 2 == 0) {
+ logger.info("Helles Feld erstellt."+i);
+ b.setBackground(new Color(90, 90, 90));
+ } else {
+ logger.info("Dunkles Feld erstellt."+i);
+ b.setBackground(new Color(65, 65, 65));
+ }
+ b.setForeground(Color.WHITE);
+ b.setBorderPainted(false);
+
+ panelLinks.add(b);
+ }
+ }
+
+}
diff --git a/src/main/java/de/mannheim/th/chess/ui/Ui.java b/src/main/java/de/mannheim/th/chess/ui/Ui.java
deleted file mode 100644
index 7c2563e..0000000
--- a/src/main/java/de/mannheim/th/chess/ui/Ui.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package de.mannheim.th.chess.ui;
-
-import java.awt.EventQueue;
-import java.util.ArrayList;
-
-import de.mannheim.th.chess.utl.GameReader;
-
-/**
- * Zeigt das Main-Menü der App an.
- */
-public class Ui{
-
- private ArrayList gamewindows = new ArrayList<>();
- private GameReader reader = new GameReader();
- private MainFrame mf;
-
- public Ui() {
- mf = new MainFrame();
- mf.setVisible(true);
-
- }
-}
\ No newline at end of file
diff --git a/target/classes/de/mannheim/th/chess/App.class b/target/classes/de/mannheim/th/chess/App.class
index 06cb03b..49b8928 100644
Binary files a/target/classes/de/mannheim/th/chess/App.class and b/target/classes/de/mannheim/th/chess/App.class differ