Problème apparation de bouton
Fermé
Look
-
Modifié le 31 mai 2018 à 15:01
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 31 mai 2018 à 19:56
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 31 mai 2018 à 19:56
A voir également:
- Problème apparation de bouton
- Réinitialiser chromecast sans bouton - Guide
- Bouton reinitialisation pc - Guide
- Bouton marche arret i o - Forum Word
- Hard reset samsung sans bouton home - Guide
- Bouton on/off comment savoir ✓ - Forum Matériel & Système
3 réponses
Incorporated
Messages postés
559
Date d'inscription
jeudi 31 mai 2018
Statut
Membre
Dernière intervention
28 août 2018
371
31 mai 2018 à 15:27
31 mai 2018 à 15:27
Bonjour,
Ceci pourrait peut-être vous aidez :
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java?archived-source=26832
Ceci pourrait peut-être vous aidez :
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java?archived-source=26832
Le code complet
package view; import javax.swing.JPanel; import java.awt.Color; import java.awt.BorderLayout; import java.awt.GridLayout; import java.util.logging.Level; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class Fenetre extends JFrame { public Fenetre() { JFrame Launcher = new JFrame(); JFrame Stage = new JFrame(); int longueurFen = 700; int largeurFen = 550; JPanel pan_launcher = new JPanel(); JPanel pan_stage = new JPanel(); JPanel pan_level1 = new JPanel(); JPanel pan_level2 = new JPanel(); JPanel pan_level3 = new JPanel(); JPanel pan_level4 = new JPanel(); JPanel pan_level5 = new JPanel(); JButton bouton_play = new JButton("Play"); JButton bouton_exit = new JButton("Echap"); JButton Return_Launcher = new JButton("Return to Launcher"); JButton Next_level1 = new JButton("Next level"); JButton Next_level2 = new JButton("Next level"); JButton Next_level3 = new JButton("Next level"); JButton Next_level4 = new JButton("Next level"); JButton Next_level5 = new JButton("Wait for update ... "); JLabel texte = new JLabel("Lorann !\n\n Choose what you want to do :\n\n"); String url = "Lorann.png"; String url2 = "Stage.png"; ImageIcon icone = new ImageIcon(url); ImageIcon icone2 = new ImageIcon(url2); JLabel logo = new JLabel(icone, JLabel.CENTER); // JLabel logo2 = new JLabel(icone2, JLabel.CENTER); // JLabel logo_test = new JLabel(icone, JLabel.CENTER); Launcher.setTitle("Lorann Game"); Launcher.setResizable(false); Launcher.setSize(longueurFen, largeurFen); Launcher.setLocationRelativeTo(null); Launcher.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Launcher.setAlwaysOnTop(true); Stage.setTitle("Lorann stage"); Stage.setResizable(false); Stage.setSize(longueurFen, largeurFen); Stage.setLocationRelativeTo(null); Stage.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Stage.setAlwaysOnTop(true); pan_launcher.add(texte); pan_launcher.add(bouton_play); pan_launcher.add(bouton_exit); pan_launcher.add(logo); //pan_level1.add(logo_test); pan_launcher.setBackground(Color.BLACK); Launcher.validate(); Launcher.setVisible(true); Launcher.setContentPane(pan_launcher); Stage.setContentPane(pan_level1); pan_level1.setVisible(false); bouton_exit.addActionListener(e -> System.exit(0)); bouton_play.addActionListener(e -> Launcher.dispose()); //bouton_play.addActionListener(e -> Launcher.setVisible(false)); bouton_play.addActionListener(e -> Stage.setVisible(true)); Stage.setContentPane(pan_stage); pan_stage.setBackground(Color.BLACK); Stage.setLayout(new GridLayout(0,5)); JButton lvl1; JButton lvl2; JButton lvl3; JButton lvl4; JButton lvl5; Stage.getContentPane().add(lvl1 = new JButton("Level 1")); Stage.getContentPane().add(lvl2 = new JButton("Level 2")); Stage.getContentPane().add(lvl3 = new JButton("Level 3")); Stage.getContentPane().add(lvl4 = new JButton("Level 4")); Stage.getContentPane().add(lvl5 = new JButton("Level 5")); lvl1.setForeground(Color.WHITE); lvl1.setIcon(new ImageIcon("lvl1.png" )); lvl2.setForeground(Color.WHITE); lvl2.setIcon(new ImageIcon("lvl2.png" )); lvl3.setForeground(Color.WHITE); lvl3.setIcon(new ImageIcon("lvl3.png" )); lvl4.setForeground(Color.WHITE); lvl4.setIcon(new ImageIcon("lvl4.png" )); lvl5.setForeground(Color.WHITE); lvl5.setIcon(new ImageIcon("lvl5.png" )); lvl1.addActionListener(e -> pan_stage.setVisible(false)); lvl1.addActionListener(e -> pan_level1.setVisible(true)); pan_level1.add(Next_level1); Next_level1.setVisible(true); pan_level1.add(Return_Launcher); Next_level1.addActionListener(e -> pan_level1.setVisible(false)); Next_level1.addActionListener(e -> pan_level2.setVisible(true)); Return_Launcher.addActionListener(e -> pan_level1.setVisible(false)); Return_Launcher.addActionListener(e -> pan_launcher.setVisible(true)); lvl2.addActionListener(e -> pan_stage.setVisible(false)); lvl2.addActionListener(e -> pan_level2.setVisible(true)); pan_level2.add(Next_level2); Next_level2.setVisible(true); pan_level1.add(Return_Launcher); Next_level2.addActionListener(e -> pan_level2.setVisible(false)); Next_level2.addActionListener(e -> pan_level3.setVisible(true)); Return_Launcher.addActionListener(e -> pan_level2.setVisible(false)); Return_Launcher.addActionListener(e -> pan_launcher.setVisible(true)); lvl3.addActionListener(e -> pan_stage.setVisible(false)); lvl3.addActionListener(e -> pan_level3.setVisible(true)); pan_level3.add(Next_level3); pan_level1.add(Return_Launcher); Next_level3.addActionListener(e -> pan_level3.setVisible(false)); Next_level3.addActionListener(e -> pan_level4.setVisible(true)); Return_Launcher.addActionListener(e -> pan_level3.setVisible(false)); Return_Launcher.addActionListener(e -> pan_launcher.setVisible(true)); lvl4.addActionListener(e -> pan_stage.setVisible(false)); lvl4.addActionListener(e -> pan_level4.setVisible(true)); pan_level4.add(Next_level4); pan_level1.add(Return_Launcher); Next_level4.addActionListener(e -> pan_level4.setVisible(false)); Next_level4.addActionListener(e -> pan_level5.setVisible(true)); Return_Launcher.addActionListener(e -> pan_level4.setVisible(false)); Return_Launcher.addActionListener(e -> pan_launcher.setVisible(true)); lvl5.addActionListener(e -> pan_stage.setVisible(false)); lvl5.addActionListener(e -> pan_level5.setVisible(true)); pan_level5.add(Next_level5); pan_level1.add(Return_Launcher); Return_Launcher.addActionListener(e -> pan_level5.setVisible(false)); Return_Launcher.addActionListener(e -> pan_launcher.setVisible(true)); } }
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié le 31 mai 2018 à 20:30
Modifié le 31 mai 2018 à 20:30
Bonjour,
Tout d'abord, ton code est très mal organisé donc forcément tu t’emmêles les pinceaux, et à mon avis ce n'est que le début, car si tu ne remédies pas rapidement au problème tu seras rapidement coincé à chaque changement
Ne serait-ce que l'entête du code fait peur :
Ici on a 3 JFrame dans une seule classe... Déjà là il faut dire stop !
Chaque fenêtre devrait être gérée dans sa propre classe, ça diviserait déjà la complexité par deux, puisque tu n'aurais plus qu'à gérer la moitié de ton code de chaque côté.
Quant à ton problème, il est ici :
(je considère les numéros de ligne du code #13)
Tu as fait deux fois des
Donc même si tu fais un
Pour corriger ce problème, tu pourrais remplacer tes duos de setVisible par des setContentPane.
Exemple :
Comme ceci tu basculerais d'un JPanel à un autre dans JFrame avec un seul d'affiché à chaque fois.
Remarque : tu pourrais t'inspirer de ce principe pour ton launcher afin d'éviter la deuxième JFrame.
Tout d'abord, ton code est très mal organisé donc forcément tu t’emmêles les pinceaux, et à mon avis ce n'est que le début, car si tu ne remédies pas rapidement au problème tu seras rapidement coincé à chaque changement
Ne serait-ce que l'entête du code fait peur :
public class Fenetre extends JFrame { public Fenetre() { JFrame Launcher = new JFrame(); JFrame Stage = new JFrame();
Ici on a 3 JFrame dans une seule classe... Déjà là il faut dire stop !
Chaque fenêtre devrait être gérée dans sa propre classe, ça diviserait déjà la complexité par deux, puisque tu n'aurais plus qu'à gérer la moitié de ton code de chaque côté.
Quant à ton problème, il est ici :
(je considère les numéros de ligne du code #13)
Stage.setContentPane(pan_level1); // ligne 80 Stage.setContentPane(pan_stage); // ligne 90 lvl1.addActionListener(e -> pan_stage.setVisible(false)); // ligne 115 lvl1.addActionListener(e -> pan_level1.setVisible(true)); // ligne 116
Tu as fait deux fois des
setContentPanesur Stage, or il ne peut y en avoir qu'un à la fois et seul le dernier compte.
Donc même si tu fais un
pan_level1.setVisible(true)il n'y a rien à rendre visible parce que le pan_level1 n'est plus du tout dans Stage, c'est comme s'il n'existait pas.
Pour corriger ce problème, tu pourrais remplacer tes duos de setVisible par des setContentPane.
Exemple :
lvl1.addActionListener(e -> Stage.setContentPane(pan_level1)); // remplace ligne 115 et 116
Comme ceci tu basculerais d'un JPanel à un autre dans JFrame avec un seul d'affiché à chaque fois.
Remarque : tu pourrais t'inspirer de ce principe pour ton launcher afin d'éviter la deuxième JFrame.
31 mai 2018 à 15:30
31 mai 2018 à 15:37
31 mai 2018 à 15:39
Mais les import sont bien la.
31 mai 2018 à 15:44
31 mai 2018 à 15:46