diff --git a/LoadButton.java b/LoadButton.java new file mode 100644 index 0000000..593290f --- /dev/null +++ b/LoadButton.java @@ -0,0 +1,65 @@ +import javax.swing.*; +import javax.swing.filechooser.FileNameExtensionFilter; +import java.awt.*; +import java.awt.event.*; +import java.io.*; + +public class LoadButton implements ActionListener { + + private int GRID_SIZE; + private JTextField[][] grid; + + public LoadButton( int GRID_SIZE, JTextField[][] grid) { + + this.GRID_SIZE = GRID_SIZE; + this.grid = grid; + } + + @Override + + public void actionPerformed(ActionEvent e) { + chargerFichier(); + } + + + //charger une grille existante + private void chargerFichier() { + JFileChooser choix = new JFileChooser(System.getProperty("user.dir")); // ce placer dans le repertoire ou se situe le code pour JFIleChooser + choix.setDialogTitle("Choisir un fichier"); + choix.setFileFilter(new FileNameExtensionFilter("Fichiers texte", "txt")); + + int choixValide = choix.showOpenDialog(choix); + + if (choixValide != JFileChooser.APPROVE_OPTION) return; + + effacerGrille(); // efface que si l'utilisateur choisit un fichier + + File fichierCharger = choix.getSelectedFile(); // permet de réecrire le fichier dans la grille + try (BufferedReader read = new BufferedReader(new FileReader(fichierCharger))) { + int a = 0; + String line; + while ((line = read.readLine()) != null && a < GRID_SIZE) { + for (int col = 0; col < Math.min(line.length(), GRID_SIZE); col++) { + char ch = line.charAt(col); + if (Character.isDigit(ch) && ch != '0') { + grid[a][col].setText(String.valueOf(ch)); + } + } + a++; + } + } catch (IOException e) { + JOptionPane.showMessageDialog(null, "Erreur lors du chargement du fichier.", "Erreur", JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } + } + + // Effacer le contenu de la grille + public void effacerGrille() { + for (int i = 0; i < GRID_SIZE; i++) { + for (int j = 0; j < GRID_SIZE; j++) { + grid[i][j].setText(""); + } + } + } + +} diff --git a/Makefile b/Makefile index d5039ac..ec0fa6f 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ J = java Main.class : Main.java SudokuGrid.class ${JC} ${JCFLAGS} Main.java -SudokuGrid.class : SudokuGrid.java TextFilter.class SaveButton.class +SudokuGrid.class : SudokuGrid.java TextFilter.class SaveButton.class LoadButton.class ${JC} ${JCFLAGS} SudokuGrid.java TextFilter.class : TextFilter.java @@ -19,6 +19,9 @@ TextFilter.class : TextFilter.java SaveButton.class : SaveButton.java ${JC} ${JCFLAGS} SaveButton.java +LoadButton.class : LoadButton.java + ${JC} ${JCFLAGS} LoadButton.java + ### REGLES OPTIONNELLES ### diff --git a/SudokuGrid.java b/SudokuGrid.java index d71a5af..0fcfb5b 100644 --- a/SudokuGrid.java +++ b/SudokuGrid.java @@ -1,8 +1,6 @@ import javax.swing.*; -import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; import java.awt.event.*; -import java.io.*; public class SudokuGrid extends JFrame { private static final int GRID_SIZE = 9; // Taille de la grille Sudoku 9x9 @@ -45,11 +43,10 @@ public class SudokuGrid extends JFrame { // Bouton pour chargé la grille JButton load = new JButton("Charger"); - load.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - chargerFichier(); - } - }); + + LoadButton loader = new LoadButton(GRID_SIZE, grid); + + load.addActionListener(loader); bouton.add(load); bouton.add(save); @@ -59,53 +56,6 @@ public class SudokuGrid extends JFrame { getContentPane().add(bouton, BorderLayout.EAST); } - // vérifier si la grille est valide (unicité) - private boolean GrilleValide() { - // à completer - return true; - } - - // sauvegarder la grille en entier dans un texte - - - // charger une grille existant - private void chargerFichier() { - JFileChooser choix = new JFileChooser(System.getProperty("user.dir")); // ce placer dans le repertoire ou se situe le code pour JFIleChooser - choix.setDialogTitle("Choisir un fichier"); - choix.setFileFilter(new FileNameExtensionFilter("Fichiers texte", "txt")); - - int choixValide = choix.showOpenDialog(this); - - if (choixValide != JFileChooser.APPROVE_OPTION) return; - - effacerGrille(); // efface que si l'utilisateur choisit un fichier - - File fichierCharger = choix.getSelectedFile(); // permet de réecrire le fichier dans la grille - try (BufferedReader read = new BufferedReader(new FileReader(fichierCharger))) { - int a = 0; - String line; - while ((line = read.readLine()) != null && a < GRID_SIZE) { - for (int col = 0; col < Math.min(line.length(), GRID_SIZE); col++) { - char ch = line.charAt(col); - if (Character.isDigit(ch) && ch != '0') { - grid[a][col].setText(String.valueOf(ch)); - } - } - a++; - } - } catch (IOException e) { - JOptionPane.showMessageDialog(null, "Erreur lors du chargement du fichier.", "Erreur", JOptionPane.ERROR_MESSAGE); - e.printStackTrace(); - } - } - - // Effacer le contenu de la grille - private void effacerGrille() { - for (int i = 0; i < GRID_SIZE; i++) { - for (int j = 0; j < GRID_SIZE; j++) { - grid[i][j].setText(""); - } - } - } + }