38 lines
1.8 KiB
Java
38 lines
1.8 KiB
Java
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.");
|
|
}
|
|
}
|
|
}
|
|
}
|