import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Enter extends JPanel { private static final int GRID_SIZE = 3; private static final int REGION_SIZE = 3; private static final int CELL_SIZE = 50; private int[][] grid; private int[][] initialGrid; // Pour stocker la grille initiale private int selectedRow = -1; private int selectedCol = -1; public Enter(int[][] grid) { this.grid = grid; // Copie de la grille initiale this.initialGrid = new int[grid.length][grid[0].length]; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[i].length; j++) { this.initialGrid[i][j] = grid[i][j]; } } setPreferredSize(new Dimension(GRID_SIZE * REGION_SIZE * CELL_SIZE, GRID_SIZE * REGION_SIZE * CELL_SIZE)); setFocusable(true); // Permet au JPanel de recevoir les événements de souris addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int x = e.getX() / CELL_SIZE; int y = e.getY() / CELL_SIZE; if (x >= 0 && x < GRID_SIZE * REGION_SIZE && y >= 0 && y < GRID_SIZE * REGION_SIZE) { selectedRow = y; selectedCol = x; System.out.println("Case sélectionnée : (" + selectedRow + ", " + selectedCol + ")"); if (initialGrid[selectedRow][selectedCol] == 0) { // Ne permet la modification que pour les cellules vides String valueStr = JOptionPane.showInputDialog(null, "Enter value for the selected cell:"); try { int value = Integer.parseInt(valueStr); grid[selectedRow][selectedCol] = value; repaint(); } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(null, "Invalid input. Please enter a number."); } } else { JOptionPane.showMessageDialog(null, "You can't edit the default value."); } } } }); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); // Dessiner les cases de la grille for (int i = 0; i < GRID_SIZE * REGION_SIZE; i++) { for (int j = 0; j < GRID_SIZE * REGION_SIZE; j++) { g.setColor(Color.BLACK); g.drawRect(j * CELL_SIZE, i * CELL_SIZE, CELL_SIZE, CELL_SIZE); int value = grid[i][j]; if (value != 0) { g.drawString(String.valueOf(value), j * CELL_SIZE + CELL_SIZE / 2, i * CELL_SIZE + CELL_SIZE / 2); } } } } }