82 lines
3.0 KiB
Java
82 lines
3.0 KiB
Java
/*
|
|
La classe <code>SaveButton</code> est utilisée pour la sauvegarde de la grille au format .gri à l'aide d'un bouton.
|
|
@version 1.1
|
|
@author Thomas Follea, Yann Keraudren
|
|
*/
|
|
|
|
import javax.swing.*;
|
|
import java.awt.event.*;
|
|
import java.io.*;
|
|
|
|
public class SaveButton implements ActionListener {
|
|
|
|
private int GRID_SIZE;
|
|
private JTextField[][] grid;
|
|
|
|
public SaveButton(int GRID_SIZE, JTextField[][] grid) {
|
|
this.GRID_SIZE = GRID_SIZE;
|
|
this.grid = grid;
|
|
|
|
}
|
|
|
|
@Override
|
|
// Lorsque l'utilisateur appuie sur le bouton, il exécute l'action saveFichier();
|
|
public void actionPerformed(ActionEvent e) {
|
|
saveFichier();
|
|
}
|
|
|
|
private void saveFichier() {
|
|
try {
|
|
//Ouvre le fichier de sauvegarde
|
|
FileOutputStream fr = new FileOutputStream("GrilleNum1.gri");
|
|
DataOutputStream fichier = new DataOutputStream(fr);
|
|
JTextField[][] texte = grid;
|
|
|
|
// Parcour la grille
|
|
for (int i = 0; i < GRID_SIZE; i++) {
|
|
StringBuilder build = new StringBuilder();
|
|
for (int j = 0; j < GRID_SIZE; j++) {
|
|
String value = texte[i][j].getText();
|
|
|
|
// Vérifier si la case contient plus d'un chiffre
|
|
if (value.length() > 1) {
|
|
// Afficher un message d'erreur et arrêter la sauvegarde
|
|
JOptionPane.showMessageDialog(null, "Une case comporte plus d'un chiffre. Veuillez corriger avant de sauvegarder.", "Erreur", JOptionPane.ERROR_MESSAGE);
|
|
try {
|
|
fichier.close();
|
|
} catch (IOException e) {
|
|
System.err.println("Erreur de fermeture");
|
|
}
|
|
return; // Arrêter la sauvegarde si une case comporte plus d'un chiffre
|
|
}
|
|
|
|
// Si la case est vide, ajouter "0" à la chaine de caractères à sauvegarder
|
|
if (value.isEmpty()) {
|
|
build.append("0");
|
|
} else {
|
|
build.append(value);
|
|
}
|
|
}
|
|
|
|
// Convertir la chaine de caractères en entier et écrire dans le fichier
|
|
String convert = build.toString();
|
|
int write = Integer.parseInt(convert);
|
|
fichier.writeInt(write);
|
|
}
|
|
|
|
// Fermer le fichier après la sauvegarde
|
|
try {
|
|
fichier.close();
|
|
} catch (IOException e) {
|
|
System.err.println("Erreur de fermeture");
|
|
}
|
|
// Affiche un message de succès
|
|
JOptionPane.showMessageDialog(null, "Grille sauvegardée avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
|
|
} catch (IOException e) {
|
|
// Affiche un message d'erreur
|
|
JOptionPane.showMessageDialog(null, "Erreur lors de la sauvegarde de la grille.", "Erreur", JOptionPane.ERROR_MESSAGE);
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|