import java.awt.*; import java.net.URL; import javax.imageio.ImageIO; import javax.swing.*; public class CadreDeConnexion extends JFrame { //-------------------------------------------------------------------------- // Méthode peremttant de charger(récupérer) l'image îcone depuis Ressources // ------------------------------------------------------------------------- private Image chargerImageDepuisRessource(String cheminRessource) { // Cette méthode doit seulement charger l'image, pas rappeler elle-même. try { URL url = getClass().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; } public CadreDeConnexion() { // S'assure que la structure de la base existe même avant la connexion/création de compte GestionBDD.creerTableUtilisateurSiAbsente(); GestionBDD.creerTableScoreSiAbsente(); // Image de fond de la page de connexion Background panelBackground = null; // 1. On change l'icône de CETTE fenêtre (this) Image imageConnexion = chargerImageDepuisRessource("/images/icone.png"); if (imageConnexion != null) { // On applique la même image comme icône de la fenêtre this.setIconImage(imageConnexion); // On prépare aussi le fond pour le panneau de connexion panelBackground = new Background(imageConnexion); } // 2. Configuration de base setTitle("ZENITH FLUX"); setSize(800, 600); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); // Centre la fenêtre // 2. Style du panneau principal (Gris foncé) // On utilise ZoneDessin pour pouvoir dessiner l'image en fond JPanel panel = new ZoneDessin(panelBackground); panel.setLayout(new GridBagLayout()); setContentPane(panel); // Conteneur pour les éléments (pour les empiler verticalement) Box box = Box.createVerticalBox(); // 4. Création des composants JLabel titre = new JLabel("CONNEXION"); titre.setForeground(Color.WHITE); titre.setFont(new Font("Arial", Font.BOLD, 24)); titre.setAlignmentX(Component.CENTER_ALIGNMENT); JTextField userField = new JTextField(15); userField.setMaximumSize(new Dimension(250, 30)); JPasswordField passField = new JPasswordField(15); passField.setMaximumSize(new Dimension(250, 30)); JButton loginBtn = BoutonsManager.creerBoutonConnexion(userField, passField, this); // 5. Ajout des composants avec des espaces (Struts) box.add(titre); box.add(Box.createVerticalStrut(30)); // Espace box.add(new JLabel("Utilisateur :")); box.add(userField); box.add(Box.createVerticalStrut(15)); box.add(new JLabel("Mot de passe :")); box.add(passField); box.add(Box.createVerticalStrut(30)); box.add(loginBtn); box.add(Box.createVerticalStrut(10)); JButton createBtn = BoutonsManager.creerBoutonCreerCompte(this); box.add(createBtn); panel.add(box); // Ajoute la boîte au centre du GridBagLayout setVisible(true); } }