GUI-Programmierung Sudoku-Rätsel lösen

schwedenole

Neues Mitglied
Hallo Leute,

ich bin absoluter Neuling in Sachen Java. Habe schon ein paar Anläufe gehabt, Java zu verstehen, aber es scheiterte immer an der Objektorientierten Programmierung. Ich komme aus der iterativen Programmierung und bin es gewohnt riesige Programme in RPG IV zu schreiben (ein Dinosaurier halt).

Nun habe ich mir als Java-Projekt ein Programm ausgedacht, um ein Sudoku-Rätsel zu lösen. Ich will ein leeres Spiel-Feld haben, in welches ich die Sudoku-Zahlen aus einer Zeitung eingebe. An den Rändern der leeren Felder sollen die für das jeweilige Feld möglichen Zahlen erscheinen. Ich will dann eine Routine bauen, die das komplette Sudoku-Rätsel automatisch löst.

Ich scheitere schon beim einfachen Spielfeldaufbau. Natürlich könnte ich jetzt alle 81 Felder des Spielfeldes im riesigen Konstruktor definieren. Das finde ich aber zu umständlich. Mir schwebt eine eigene Klasse für ein einzelnes Zahlenfeld vor. Diese will ich dann auf dem Spielfeld positionieren, indem ich die x- und y-Positionen als Parameter übergebe. Und dann soll der Konstruktor alle 81 Felder in einem Rutsch platzieren. Und bei jedem Feld sollen die 9 Zahlen-Labels automatisch mit platziert werden.

Mein bisheriger Code sieht so aus:
Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.GridLayout;
import javax.swing.JTextField;
import javax.swing.JInternalFrame;
import javax.swing.JSplitPane;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;

public class SudokuFrame extends JFrame {

    private JPanel contentPane;
    private JTextField textField00;
    private JTextField textField01;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    SudokuFrame frame = new SudokuFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     * Constructor
     */
    public SudokuFrame() {
        setTitle("Sudoku Machine");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 1267, 711);
        contentPane = new JPanel();
        contentPane.setVisible(false);
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        JPanel pnlButtons = new JPanel();
        pnlButtons.setBounds(5, 5, 1235, 39);
        contentPane.add(pnlButtons);
        
        JButton btnClearFields = new JButton("Felder löschen");
        pnlButtons.add(btnClearFields);
        
        JButton btnSolveSudoku = new JButton("Sudoku lösen");
        pnlButtons.add(btnSolveSudoku);
        
        textField00 = new JTextField();
        textField00.setHorizontalAlignment(SwingConstants.CENTER);
        textField00.setFont(new Font("Tahoma", Font.PLAIN, 36));
        textField00.setBounds(188, 118, 50, 50);
        contentPane.add(textField00);
        textField00.setColumns(1);
        
        JLabel lblField00_1 = new JLabel("1");
        lblField00_1.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField00_1.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_1.setBounds(169, 148, 14, 20);
        contentPane.add(lblField00_1);
        
        JLabel lblField00_2 = new JLabel("2");
        lblField00_2.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField00_2.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_2.setBounds(169, 133, 14, 20);
        contentPane.add(lblField00_2);
        
        JLabel lblField00_3 = new JLabel("3");
        lblField00_3.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField00_3.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_3.setBounds(169, 117, 14, 20);
        contentPane.add(lblField00_3);
        
        JLabel lblField00_4 = new JLabel("4");
        lblField00_4.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField00_4.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_4.setBounds(186, 96, 14, 20);
        contentPane.add(lblField00_4);
        
        JLabel lblField00_5 = new JLabel("5");
        lblField00_5.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField00_5.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_5.setBounds(202, 96, 14, 20);
        contentPane.add(lblField00_5);
        
        JLabel lblField00_6 = new JLabel("6");
        lblField00_6.setHorizontalAlignment(SwingConstants.LEFT);
        lblField00_6.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_6.setBounds(225, 96, 14, 20);
        contentPane.add(lblField00_6);
        
        JLabel lblField00_7 = new JLabel("7");
        lblField00_7.setHorizontalAlignment(SwingConstants.LEFT);
        lblField00_7.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_7.setBounds(242, 117, 14, 20);
        contentPane.add(lblField00_7);
        
        JLabel lblField00_8 = new JLabel("8");
        lblField00_8.setHorizontalAlignment(SwingConstants.LEFT);
        lblField00_8.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_8.setBounds(242, 133, 14, 20);
        contentPane.add(lblField00_8);
        
        JLabel lblField00_9 = new JLabel("9");
        lblField00_9.setHorizontalAlignment(SwingConstants.LEFT);
        lblField00_9.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField00_9.setBounds(242, 148, 14, 20);
        contentPane.add(lblField00_9);
        
        textField01 = new JTextField();
        textField01.setHorizontalAlignment(SwingConstants.CENTER);
        textField01.setFont(new Font("Tahoma", Font.PLAIN, 36));
        textField01.setColumns(1);
        textField01.setBounds(290, 118, 50, 50);
        contentPane.add(textField01);
        
        JLabel lblField01_1 = new JLabel("1");
        lblField01_1.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField01_1.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_1.setBounds(271, 148, 14, 20);
        contentPane.add(lblField01_1);
        
        JLabel lblField01_2 = new JLabel("2");
        lblField01_2.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField01_2.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_2.setBounds(271, 133, 14, 20);
        contentPane.add(lblField01_2);
        
        JLabel lblField01_3 = new JLabel("3");
        lblField01_3.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField01_3.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_3.setBounds(271, 117, 14, 20);
        contentPane.add(lblField01_3);
        
        JLabel lblField01_4 = new JLabel("4");
        lblField01_4.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField01_4.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_4.setBounds(288, 96, 14, 20);
        contentPane.add(lblField01_4);
        
        JLabel lblField01_5 = new JLabel("5");
        lblField01_5.setHorizontalAlignment(SwingConstants.RIGHT);
        lblField01_5.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_5.setBounds(304, 96, 14, 20);
        contentPane.add(lblField01_5);
        
        JLabel lblField01_6 = new JLabel("6");
        lblField01_6.setHorizontalAlignment(SwingConstants.LEFT);
        lblField01_6.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_6.setBounds(327, 96, 14, 20);
        contentPane.add(lblField01_6);
        
        JLabel lblField01_7 = new JLabel("7");
        lblField01_7.setHorizontalAlignment(SwingConstants.LEFT);
        lblField01_7.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_7.setBounds(344, 117, 14, 20);
        contentPane.add(lblField01_7);
        
        JLabel lblField01_8 = new JLabel("8");
        lblField01_8.setHorizontalAlignment(SwingConstants.LEFT);
        lblField01_8.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_8.setBounds(344, 133, 14, 20);
        contentPane.add(lblField01_8);
        
        JLabel lblField01_9 = new JLabel("9");
        lblField01_9.setHorizontalAlignment(SwingConstants.LEFT);
        lblField01_9.setFont(new Font("Tahoma", Font.PLAIN, 12));
        lblField01_9.setBounds(344, 148, 14, 20);
        contentPane.add(lblField01_9);
    }
}

Ich stelle mir für den Konstruktor in etwa so etwas vor:
Java:
public SudokuFrame() {
    /**
     * Zuerst die Panels und die Buttons definieren
     */
    
    /**
     * Und jetzt die Felder setzen
     */
    SudokuField[0].setPosition(188, 118);
    SudokuField[1].setPosition(290, 118);
        // ...
    SudokuField[80].setPosition(xPosition, yPosition);
}

Aber wie schreibe ich so eine Klasse? Vielleicht könnt ihr mir ja weiterhelfen.

Ich programmiere übrigens mit Eclipse 2019-12 und als GUI-Erweiterung nutze ich WindowBuilder 1.9.1.

Schöne Grüße
Artur
 

mihe7

Top Contributor
Fang am besten mit dem Modell an und schreib das Programm erstmal ohne GUI. Zum Testen kannst Du z. B. Textdateien verwenden, in die Du das Sudoku schreibst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
F Automat-Programmierung Java Basics - Anfänger-Themen 30
N Lambdas, Methodenref, fkt Programmierung ? Java Basics - Anfänger-Themen 10
districon Dynamisch Programmierung/Backtracking/Memoization Java Basics - Anfänger-Themen 3
S Buchstaben Programmierung Bedeutung Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
A Frage zur programmierung Java Basics - Anfänger-Themen 12
Nerdinfekt Programmieranfänger, Schwierigkeiten mit der Programmierung Java Basics - Anfänger-Themen 6
U Compiler-Fehler Programmierung einer Drehkugel Java Basics - Anfänger-Themen 8
L Programmierung mit Hash Java Basics - Anfänger-Themen 3
C Wie habt Ihr angefangen mit der Java Programmierung, ohne Programmiervorkenntnisse Java Basics - Anfänger-Themen 8
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
S Programmierung simulieren - aber wie?! Java Basics - Anfänger-Themen 3
H Java Programmierung Java Basics - Anfänger-Themen 3
W Problem bei Programmierung von Monte-Carlo-Integration Java Basics - Anfänger-Themen 12
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
P Rechnen mit Brüchen - objektorientierte Programmierung Java Basics - Anfänger-Themen 18
D Objektorientierte Programmierung Java Basics - Anfänger-Themen 13
F Attribute bei Objektorientierter Programmierung Java Basics - Anfänger-Themen 11
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
Q Objektorientierte Programmierung Java Basics - Anfänger-Themen 17
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
C GUI Programmierung unter Windows mit Java womit? Java Basics - Anfänger-Themen 11
D Collections Aufgaben Java-Programmierung Überforderung Java Basics - Anfänger-Themen 36
A GUI Programmierung mit Textfield Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
A Methoden Habe ein Problem bei folgender Programmierung Java Basics - Anfänger-Themen 15
slejden Erste Schritte Frage zur OOP (objektorientierten Programmierung Java Basics - Anfänger-Themen 4
V Threads Nebenläufige Programmierung Java Basics - Anfänger-Themen 6
V Nebenläufige Programmierung Java Basics - Anfänger-Themen 5
Henri Paare Frage über Java Programmierung Java Basics - Anfänger-Themen 10
S Programmierung eines Geldwechselautomaten! Java Basics - Anfänger-Themen 2
R Einige Neulingsfragen (Wrapper, GUI-Programmierung) Java Basics - Anfänger-Themen 4
D JavaBeans und die visuelle Programmierung Java Basics - Anfänger-Themen 2
M Dringend Experten für Scala-Play basierte Programmierung!!!! Java Basics - Anfänger-Themen 0
Z Programmierung eines Stacks Java Basics - Anfänger-Themen 19
A Programmierung herangehensweise Java Basics - Anfänger-Themen 9
T Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert! Java Basics - Anfänger-Themen 6
G 3D-Spiele-Programmierung Java Basics - Anfänger-Themen 3
I Programmierung-Hausaufgabe: Hilfe benötigt Java Basics - Anfänger-Themen 8
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
T Nachhilfe JAVA Programmierung Java Basics - Anfänger-Themen 1
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
N Socket-Programmierung Java Basics - Anfänger-Themen 4
kaoZ Android Programmierung / Erstellen einer neuen Instanz Java Basics - Anfänger-Themen 2
O OOP Input & Output in der GUI-Programmierung Java Basics - Anfänger-Themen 2
O Java Grafik-Programmierung? Java Basics - Anfänger-Themen 16
F Fehler bei Array und Index Programmierung Java Basics - Anfänger-Themen 18
K Objektorientierten Programmierung Java Basics - Anfänger-Themen 3
R Einstieg in Programmierung Java Basics - Anfänger-Themen 8
W Problem bei MineSweeper Programmierung Java Basics - Anfänger-Themen 10
N Objektorientierte Programmierung: Erben von 2 Klassen - wie ist korrekte Vorgehensweise? Java Basics - Anfänger-Themen 16
D Best Practise für Programmierung Java Basics - Anfänger-Themen 7
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
W objektorientierte Programmierung Java Basics - Anfänger-Themen 25
W objektorientierte Programmierung - String in andere Klasse übergeben Java Basics - Anfänger-Themen 13
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
Grejak OOP Einstieg in Objekt-Orientierte-Programmierung Java Basics - Anfänger-Themen 3
D Frage zu Bit Operatoren in der Programmierung Java Basics - Anfänger-Themen 9
U Geräte-Programmierung ? Java Basics - Anfänger-Themen 15
S 2 kurz Fragen zur Möglichkeit der Programmierung Java Basics - Anfänger-Themen 7
T Objektorientierte Programmierung, わからない です Java Basics - Anfänger-Themen 6
J Allgemeine Fragen zur Programmierung Java Basics - Anfänger-Themen 36
N Grafische Programmierung mit jeweils anderen Bildern bei versch. Ergebnissen Java Basics - Anfänger-Themen 9
S Objektorientierte Programmierung Java Basics - Anfänger-Themen 21
M Gui Programmierung Java Basics - Anfänger-Themen 21
J Spielevorschläge für Programmierung Java Basics - Anfänger-Themen 3
O Eisenbahn-Programmierung Java Basics - Anfänger-Themen 8
S Schlechte Programmierung Java Basics - Anfänger-Themen 5
O Probleme bei OO-Programmierung mit Vererbung Java Basics - Anfänger-Themen 18
M Programmierung kürzen??? Java Basics - Anfänger-Themen 5
N Umstieg auf objektorintierte Programmierung Java Basics - Anfänger-Themen 2
N Probleme mit meiner Programmierung Java Basics - Anfänger-Themen 5
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
H Programmierung Ampelsteuerung Java Basics - Anfänger-Themen 4
J [Erledigt] Applet Programmierung Java Basics - Anfänger-Themen 4
C Objektorientierte Programmierung Java Basics - Anfänger-Themen 11
T Gui Programmierung lernen Java Basics - Anfänger-Themen 3
E Toolkit (Scanner) Programmierung Java Basics - Anfänger-Themen 5
D Programmierung Profi Java Basics - Anfänger-Themen 18
G Problem bei Programmierung Java Basics - Anfänger-Themen 15
X Objektorientierte Java Programmierung - 3 Fragen zum Code Java Basics - Anfänger-Themen 5
G Problem bei Programmierung Java Basics - Anfänger-Themen 2
G thread programmierung für ANFÄNGER Java Basics - Anfänger-Themen 2
S generic programmierung "ne:w T[X]" Java Basics - Anfänger-Themen 2
A Einstieg in die Programmierung Java Basics - Anfänger-Themen 20
I Frage wegen Wörterbuch Programmierung Java Basics - Anfänger-Themen 13
X Programmierung mit geometrischen Figuren Java Basics - Anfänger-Themen 3
G Opjektorientierte Programmierung (OOP). einfach für euch Java Basics - Anfänger-Themen 4
G Funktions Programmierung Java Basics - Anfänger-Themen 5
W Gui - Grundsätzliche Programmierung Java Basics - Anfänger-Themen 11
G Schnittstellen Programmierung Java Basics - Anfänger-Themen 5
G Nebenleufige Programmierung Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben