import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SudokuGame extends JFrame {
    private static final int GRID_SIZE = 9;
    private static final int CELL_SIZE = 60;
    private static final int BOARD_SIZE = GRID_SIZE * CELL_SIZE;
    private static final int[][] BOARD = {
            {5, 3, 0, 0, 7, 0, 0, 0, 0},
            {6, 0, 0, 1, 9, 5, 0, 0, 0},
            {0, 9, 8, 0, 0, 0, 0, 6, 0},
            {8, 0, 0, 0, 6, 0, 0, 0, 3},
            {4, 0, 0, 8, 0, 3, 0, 0, 1},
            {7, 0, 0, 0, 2, 0, 0, 0, 6},
            {0, 6, 0, 0, 0, 0, 2, 8, 0},
            {0, 0, 0, 4, 1, 9, 0, 0, 5},
            {0, 0, 0, 0, 8, 0, 0, 7, 9}
    };

    private JTextField[][] textFields;

    public SudokuGame() {
        setTitle("Sudoku");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setLayout(new GridLayout(GRID_SIZE, GRID_SIZE));

        textFields = new JTextField[GRID_SIZE][GRID_SIZE];

        // Create and initialize the text fields
        for (int row = 0; row < GRID_SIZE; row++) {
            for (int col = 0; col < GRID_SIZE; col++) {
                textFields[row][col] = new JTextField();
                textFields[row][col].setHorizontalAlignment(JTextField.CENTER);
                textFields[row][col].setFont(new Font("Arial", Font.BOLD, 20));
                textFields[row][col].setPreferredSize(new Dimension(CELL_SIZE, CELL_SIZE));
                add(textFields[row][col]);
            }
        }

        // Set the initial values on the text fields
        for (int row = 0; row < GRID_SIZE; row++) {
            for (int col = 0; col < GRID_SIZE; col++) {
                if (BOARD[row][col] != 0) {
                    textFields[row][col].setText(String.valueOf(BOARD[row][col]));
                    textFields[row][col].setEditable(false);
                }
            }
        }

        pack();
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new SudokuGame().setVisible(true);
            }
        });
    }
}