Problème apparation de bouton
Look
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'ai actuellement un problème, sur mes JPanel , les boutons ne s'affichent pas alors que dans ceux d'avant les boutons sont affichés (j'ai utilisé les mêmes lignes)
Sur le Panel rien ne s'affiche et rien ne veut s'afficher.
Merci d'avance pour vôtre aide.
J'ai actuellement un problème, sur mes JPanel , les boutons ne s'affichent pas alors que dans ceux d'avant les boutons sont affichés (j'ai utilisé les mêmes lignes)
JPanel pan_launcher = new JPanel(); JPanel pan_stage = new JPanel(); JPanel pan_level1 = new JPanel(); JButton lvl1; lvl1.addActionListener(e -> pan_stage.setVisible(false)); lvl1.addActionListener(e -> pan_level1.setVisible(true)); pan_level1.add(Next_level1); 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));
Sur le Panel rien ne s'affiche et rien ne veut s'afficher.
Merci d'avance pour vôtre aide.
A voir également:
- Problème apparation de bouton
- Diagnostic bouton photo - Accueil - Outils
- Bouton home clavier ✓ - Forum PC portable
- Bouton shift pc - Forum Jeux vidéo
- Bouton on/off comment savoir - Forum Word
- Réinitialiser chromecast sans bouton - Guide
3 réponses
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));
}
}
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.
Mais les import sont bien la.
fenetre.setTitle ("Ubuntu Media Player"); fenetre.setSize (700, 200);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 ... ");