diff --git a/SudokuButtonListener.java b/SudokuButtonListener.java index 242aa1f..d98533a 100644 --- a/SudokuButtonListener.java +++ b/SudokuButtonListener.java @@ -16,9 +16,10 @@ public class SudokuButtonListener implements ActionListener { /** * Constructeur de SudokuButtonListener. - * @param row L'indice de ligne du bouton. - * @param col L'indice de colonne du bouton. - * @param sudoku L'instance de Sudoku associée à l'interface utilisateur. + * + * @param row L'indice de ligne du bouton. + * @param col L'indice de colonne du bouton. + * @param sudoku L'instance de Sudoku associée à l'interface utilisateur. * @param buttons La grille de boutons associée à l'interface utilisateur. */ public SudokuButtonListener(int row, int col, Sudoku sudoku, JButton[][] buttons) { @@ -31,6 +32,7 @@ public class SudokuButtonListener implements ActionListener { /** * Méthode invoquée lorsque le bouton associé à ce listener est cliqué. * Affiche une boîte de dialogue demandant à l'utilisateur d'entrer un nombre, puis met à jour la grille de Sudoku. + * * @param e L'événement ActionEvent associé au clic du bouton. */ @Override @@ -39,16 +41,20 @@ public class SudokuButtonListener implements ActionListener { if (input != null && input.length() > 0) { try { int num = Integer.parseInt(input); - sudoku.getGrid().getCell(row, col).setValue(num); - if (num == 0) { - buttons[row][col].setText(""); // Case vide si le nombre est 0 + if (num >= 0 && num <= 9) { // Vérifie si le nombre est dans la plage autorisée + sudoku.getGrid().getCell(row, col).setValue(num); + if (num == 0) { + buttons[row][col].setText(""); // Case vide si le nombre est 0 + } else { + buttons[row][col].setText(String.valueOf(num)); + } + if (!isValid(num, row, col)) { + buttons[row][col].setForeground(Color.RED); // Met le texte en rouge en cas de mouvement invalide + } else { + buttons[row][col].setForeground(Color.BLACK); // Réinitialise la couleur du texte + } } else { - buttons[row][col].setText(String.valueOf(num)); - } - if (!isValid(num, row, col)) { - buttons[row][col].setForeground(Color.RED); // Met le texte en rouge en cas de mouvement invalide - } else { - buttons[row][col].setForeground(Color.BLACK); // Réinitialise la couleur du texte + JOptionPane.showMessageDialog(null, "Veuillez entrer un nombre entre 0 et 9."); } } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(null, "Veuillez entrer un nombre valide."); @@ -58,6 +64,7 @@ public class SudokuButtonListener implements ActionListener { /** * Vérifie si le nombre entré est valide pour la position donnée dans la grille de Sudoku. + * * @param num Le nombre entré par l'utilisateur. * @param row L'indice de ligne de la cellule dans la grille. * @param col L'indice de colonne de la cellule dans la grille. @@ -69,6 +76,7 @@ public class SudokuButtonListener implements ActionListener { /** * Vérifie si le nombre est valide dans la ligne donnée de la grille de Sudoku. + * * @param num Le nombre entré par l'utilisateur. * @param row L'indice de ligne de la cellule dans la grille. * @return True si le nombre est valide dans cette ligne, False sinon. @@ -84,6 +92,7 @@ public class SudokuButtonListener implements ActionListener { /** * Vérifie si le nombre est valide dans la colonne donnée de la grille de Sudoku. + * * @param num Le nombre entré par l'utilisateur. * @param col L'indice de colonne de la cellule dans la grille. * @return True si le nombre est valide dans cette colonne, False sinon. @@ -99,9 +108,10 @@ public class SudokuButtonListener implements ActionListener { /** * Vérifie si le nombre est valide dans la boîte 3x3 contenant la cellule donnée. - * @param num Le nombre entré par l'utilisateur. - * @param boxStartRow L'indice de ligne du coin supérieur gauche de la boîte. - * @param boxStartCol L'indice de colonne du coin supérieur gauche de la boîte. + * + * @param num Le nombre entré par l'utilisateur. + * @param boxStartRow L'indice de ligne du coin supérieur gauche de la boîte. + * @param boxStartCol L'indice de colonne du coin supérieur gauche de la boîte. * @return True si le nombre est valide dans cette boîte, False sinon. */ private boolean isValidBox(int num, int boxStartRow, int boxStartCol) { @@ -116,4 +126,4 @@ public class SudokuButtonListener implements ActionListener { } return true; } -} \ No newline at end of file +}