init: add icon app & correction bug

This commit is contained in:
2026-03-27 16:18:41 +01:00
parent 84df35373a
commit 8d2c3b75b8
22 changed files with 48 additions and 94 deletions

View File

@@ -1,11 +1,26 @@
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import java.util.List;
public class BoutonsManager {
private static Image chargerImageDepuisRessource(String cheminRessource) {
try {
URL url = BoutonsManager.class.getResource(cheminRessource);
if (url != null) {
return ImageIO.read(url);
}
System.err.println("Ressource introuvable : " + cheminRessource);
} catch (Exception e) {
System.err.println("Erreur chargement image : " + e.getMessage());
}
return null;
}
// Méthode pour créer le bouton des scores utilisateur
public static JButton creerBoutonScores(JFrame fenetre, int utilisateurId) {
JButton boutonScores = new JButton("Voir mes scores");
@@ -58,9 +73,13 @@ public class BoutonsManager {
int userId = GestionBDD.verifierConnexion(user, pass);
if (userId != -1) {
// On ferme la fenêtre de connexion avant d'ouvrir l'écran suivant.
cadre.dispose();
Jeu jeu = new Jeu(userId);
jeu.demarrer();
// Après une connexion réussie, on affiche le menu principal
// au lieu de lancer le jeu directement.
MenuPrincipal menuPrincipal = new MenuPrincipal(userId, user);
menuPrincipal.setVisible(true);
} else {
JOptionPane.showMessageDialog(cadre, "Acces refuse");
}
@@ -83,9 +102,16 @@ public class BoutonsManager {
createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
createFrame.setLocationRelativeTo(null);
JPanel createPanel = new JPanel(new GridBagLayout());
createPanel.setBackground(new Color(30, 30, 30));
createFrame.add(createPanel);
Background panelBackgroundCreation = null;
Image imageCreation = chargerImageDepuisRessource("/images/icone.png");
if (imageCreation != null) {
createFrame.setIconImage(imageCreation);
panelBackgroundCreation = new Background(imageCreation);
}
JPanel createPanel = new ZoneDessin(panelBackgroundCreation);
createPanel.setLayout(new GridBagLayout());
createFrame.setContentPane(createPanel);
Box createBox = Box.createVerticalBox();
@@ -146,4 +172,4 @@ public class BoutonsManager {
return createAccountBtn;
}
}
}

View File

@@ -83,92 +83,6 @@ public class CadreDeConnexion extends JFrame {
panel.add(box); // Ajoute la boîte au centre du GridBagLayout
// 5. Logique du bouton
loginBtn.addActionListener(e -> {
String user = userField.getText();
String pass = new String(passField.getPassword());
int userId = GestionBDD.verifierConnexion(user, pass);
if (userId != -1) {
dispose();
Jeu jeu = new Jeu(userId);
jeu.demarrer();
} else {
JOptionPane.showMessageDialog(this, "Acces refuse");
}
});
createBtn.addActionListener(evt -> {
JFrame createFrame = new JFrame("Creation de compte");
createFrame.setSize(800, 600);
createFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
createFrame.setLocationRelativeTo(null);
// On recharge la même image pour la fenêtre de création de compte
// afin de lui donner à la fois l'icône et le fond d'écran.
Background panelBackgroundCreation = null;
Image imageCreation = chargerImageDepuisRessource("/images/icone.png");
if (imageCreation != null) {
createFrame.setIconImage(imageCreation);
panelBackgroundCreation = new Background(imageCreation);
}
// Même principe que pour la page de connexion : le fond est dessiné par ZoneDessin
JPanel createPanel = new ZoneDessin(panelBackgroundCreation);
createPanel.setLayout(new GridBagLayout());
createFrame.setContentPane(createPanel);
Box createBox = Box.createVerticalBox();
JLabel createTitre = new JLabel("CREATION DE COMPTE");
createTitre.setForeground(Color.WHITE);
createTitre.setFont(new Font("Arial", Font.BOLD, 24));
createTitre.setAlignmentX(Component.CENTER_ALIGNMENT);
JTextField newUserField = new JTextField(15);
newUserField.setMaximumSize(new Dimension(250, 30));
JPasswordField newPassField = new JPasswordField(15);
newPassField.setMaximumSize(new Dimension(250, 30));
JButton createAccountBtn = new JButton("Créer");
createAccountBtn.setBackground(new Color(70, 130, 180));
createAccountBtn.setForeground(Color.WHITE);
createAccountBtn.setFocusPainted(false);
createAccountBtn.setAlignmentX(Component.CENTER_ALIGNMENT);
createBox.add(createTitre);
createBox.add(Box.createVerticalStrut(30));
createBox.add(new JLabel("<html><font color='white'>Nouvel utilisateur :</font></html>"));
createBox.add(newUserField);
createBox.add(Box.createVerticalStrut(15));
createBox.add(new JLabel("<html><font color='white'>Mot de passe :</font></html>"));
createBox.add(newPassField);
createBox.add(Box.createVerticalStrut(30));
createBox.add(createAccountBtn);
createPanel.add(createBox);
createAccountBtn.addActionListener(e -> {
String u = newUserField.getText().trim();
String p = new String(newPassField.getPassword());
if (u.isEmpty() || p.isEmpty()) {
JOptionPane.showMessageDialog(createFrame, "Utilisateur et mot de passe requis");
return;
}
boolean ok = GestionBDD.creerUtilisateur(u, p);
if (ok) {
JOptionPane.showMessageDialog(createFrame, "Compte cree avec succes.");
createFrame.dispose();
} else {
JOptionPane.showMessageDialog(createFrame, "Échec : le nom d'utilisateur existe deja ou erreur.");
}
});
createFrame.setVisible(true);
});
setVisible(true);
}
}

View File

@@ -1,5 +1,7 @@
import javax.swing.*;
import java.awt.*;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
// ★★★ CLASSE CREEE PAR L'UTILISATEUR ★★★
// Fichier : MenuPrincipal.java (nouveau fichier)
@@ -21,8 +23,18 @@ public class MenuPrincipal extends JFrame {
// Sauvegarde l'ID pour l'utiliser lors des appels à la base de données
this.utilisateurId = utilisateurId;
// Charge la même icône que les autres fenêtres de l'application.
try {
URL urlIcone = getClass().getResource("/images/icone.png");
if (urlIcone != null) {
setIconImage(ImageIO.read(urlIcone));
}
} catch (Exception e) {
System.err.println("Impossible de charger l'icône du menu principal : " + e.getMessage());
}
// Configuration de la fenêtre
setTitle("Menu Principal - Linea"); // Titre de la fenêtre
setTitle("ZENITH FLUX"); // Titre de la fenêtre
setSize(800, 600); // Dimensions de la fenêtre
setDefaultCloseOperation(EXIT_ON_CLOSE); // Quitter l'app à la fermeture
setLocationRelativeTo(null); // Centre la fenêtre
@@ -109,5 +121,7 @@ public class MenuPrincipal extends JFrame {
// Ajoute la boîte au panneau principal
panel.add(box);
setVisible(true);
}
}