diff --git a/LoadButton.java b/LoadButton.java index c50f872..84230c9 100644 --- a/LoadButton.java +++ b/LoadButton.java @@ -1,6 +1,7 @@ import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.event.*; +import java.awt.*; import java.io.*; public class LoadButton implements ActionListener { @@ -18,7 +19,11 @@ public class LoadButton implements ActionListener { @Override public void actionPerformed(ActionEvent e) { - chargerFichier(); + if (SudokuGrid.BOOL) { + chargerFichier(); + } else { + chargerFichierNonEditable(); + } } private void chargerFichier() { @@ -56,6 +61,46 @@ public class LoadButton implements ActionListener { } } + private void chargerFichierNonEditable() { + JFileChooser choix = new JFileChooser(System.getProperty("user.dir")); + choix.setDialogTitle("Choisir un fichier"); + choix.setFileFilter(new FileNameExtensionFilter("Fichiers gri", "gri")); + int choixValide = choix.showOpenDialog(parent); + + if (choixValide != JFileChooser.APPROVE_OPTION) return; + File Selection = choix.getSelectedFile(); + + effacerGrille(); + try { + FileInputStream fich = new FileInputStream(Selection); + DataInputStream file = new DataInputStream(fich); + for (int i = 0; i < 9; i++) { + int valeur = file.readInt(); + for (int j = 8; j >= 0; j--) { + int cell = valeur % 10; + valeur /= 10; + grid[i][j].setText(cell == 0 ? "" : String.valueOf(cell)); + // Rendre les champs de texte non éditables + if (cell != 0) { + grid[i][j].setEditable(false); + grid[i][j].setBackground(Color.white); + } + } + } + try { + file.close(); + } catch (IOException e) { + System.err.println("Erreur de fermeture"); + } + } catch (FileNotFoundException e) { + JOptionPane.showMessageDialog(null, "Le fichier sélectionné est introuvable.", "Erreur", JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } catch (IOException e) { + JOptionPane.showMessageDialog(null, "Erreur lors de l'ouverture 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++) { diff --git a/SudokuGrid.java b/SudokuGrid.java index 6a18966..e61396e 100644 --- a/SudokuGrid.java +++ b/SudokuGrid.java @@ -4,6 +4,7 @@ import java.awt.*; public class SudokuGrid extends JFrame { private static final int GRID_SIZE = 9; // Taille de la grille Sudoku 9x9 private static final int REGION_SIZE = 3; + public static final boolean BOOL = true; private JTextField[][] grid; public SudokuGrid() { @@ -47,13 +48,13 @@ public class SudokuGrid extends JFrame { // Panneau pour les boutons JPanel bouton = new JPanel(); - bouton.setBackground(new Color(88, 169, 191)); // Fond vert + bouton.setBackground(new Color(88, 169, 191)); bouton.setPreferredSize(new Dimension(150, 0)); // Espace pour les boutons // Bouton pour sauvegarder la grille JButton save = new JButton("Sauvegarder"); - SaveButton saver = new SaveButton(GRID_SIZE,grid); + SaveButton saver = new SaveButton(GRID_SIZE,grid); save.addActionListener(saver); @@ -61,7 +62,7 @@ public class SudokuGrid extends JFrame { // Bouton pour chargé la grille JButton load = new JButton("Charger"); - LoadButton loader = new LoadButton(GRID_SIZE, grid); + LoadButton loader = new LoadButton(GRID_SIZE, grid); load.addActionListener(loader); diff --git a/SudokuGridTesteur.java b/SudokuGridTesteur.java new file mode 100644 index 0000000..10c5770 --- /dev/null +++ b/SudokuGridTesteur.java @@ -0,0 +1,83 @@ +import javax.swing.*; +import java.awt.*; + +public class SudokuGridTesteur extends JFrame { + private static final int GRID_SIZE = 9; // Taille de la grille Sudoku 9x9 + private static final int REGION_SIZE = 3; + public static final boolean BOOL = false; + private JTextField[][] grid; + + public SudokuGridTesteur() { + // Panneau pour la grille Sudoku. + JPanel gridPanel = new JPanel(); + gridPanel.setLayout(new GridLayout(GRID_SIZE, GRID_SIZE)); // Utiliser GridLayout + gridPanel.setBackground(new Color(88, 169, 191)); // Fond vert + + // Initialiser la grille + grid = new JTextField[GRID_SIZE][GRID_SIZE]; + for (int i = 0; i < GRID_SIZE; i++) { + for (int j = 0; j < GRID_SIZE; j++) { + grid[i][j] = new JTextField(); + + TextFilter filtre = new TextFilter(grid[i][j], GRID_SIZE, grid, i, j); + + grid[i][j].addKeyListener(filtre); + grid[i][j].setHorizontalAlignment(JTextField.CENTER); + grid[i][j].setFont(new Font("Verdana", Font.BOLD,40)); + gridPanel.add(grid[i][j]); + + int top = 1; + int left = 1; + int bottom = 1; + int right = 1; + + // Vérifier si la case est sur le bord de la région horizontalement + if ((j + 1) % REGION_SIZE == 0 && j != GRID_SIZE - 1) { + right = 5; // Ajouter une bordure plus épaisse à droite + } + + // Vérifier si la case est sur le bord de la région verticalement + if ((i + 1) % REGION_SIZE == 0 && i != GRID_SIZE - 1) { + bottom = 5; // Ajouter une bordure plus épaisse en bas + } + + // Appliquer la bordure à la case + grid[i][j].setBorder(BorderFactory.createMatteBorder(top, left, bottom, right, Color.BLACK)); + } + } + + // Panneau pour les boutons + JPanel bouton = new JPanel(); + bouton.setBackground(new Color(88, 169, 191)); + bouton.setPreferredSize(new Dimension(150, 0)); // Espace pour les boutons + + // Bouton pour sauvegarder la grille + JButton save = new JButton("Sauvegarder"); + + SaveButton saver = new SaveButton(GRID_SIZE,grid); + + save.addActionListener(saver); + + + // Bouton pour chargé la grille + JButton load = new JButton("Charger"); + + LoadButton loader = new LoadButton(GRID_SIZE, grid); + + load.addActionListener(loader); + + + + + bouton.add(load); + bouton.add(save); + + + // Ajout des panneaux à la fenetre + getContentPane().add(gridPanel, BorderLayout.CENTER); + getContentPane().add(bouton, BorderLayout.EAST); + } + + + +}