import javax.swing.*; import java.awt.event.*; public class CaseMouseListener extends MouseAdapter { private SaisieGrille panel; public CaseMouseListener(SaisieGrille panel) { this.panel = panel; } @Override public void mouseClicked(MouseEvent e) { int x = e.getX() / panel.getTailleCellule(); int y = e.getY() / panel.getTailleCellule(); if (x >= 0 && x < panel.getTailleGrille() * panel.getTailleRegion() && y >= 0 && y < panel.getTailleGrille() * panel.getTailleRegion()) { panel.setLigneSelectionnee(y); panel.setColonneSelectionnee(x); System.out.println("Case sélectionnée : (" + panel.getLigneSelectionnee() + ", " + panel.getColonneSelectionnee() + ")"); if (panel.getGrilleInitiale()[panel.getLigneSelectionnee()][panel.getColonneSelectionnee()] == 0) { String valeurStr = JOptionPane.showInputDialog(null, "Entrez la valeur pour la cellule sélectionnée :"); try { int valeur = Integer.parseInt(valeurStr); if (panel.validerChiffre(panel.getLigneSelectionnee(), panel.getColonneSelectionnee(), valeur)) { panel.getGrille()[panel.getLigneSelectionnee()][panel.getColonneSelectionnee()] = valeur; panel.repaint(); } else { JOptionPane.showMessageDialog(null, "Ce chiffre ne respecte pas les contraintes du Sudoku. Veuillez choisir un autre chiffre."); } } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(null, "Saisie invalide. Veuillez entrer un nombre."); } } else { JOptionPane.showMessageDialog(null, "Vous ne pouvez pas modifier la valeur par défaut."); } } } }