Problème apparation de bouton

Look -  
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)

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.


3 réponses

Incorporated Messages postés 597 Statut Membre 371
 
0
Look
 
Je me suis déjà aidé de ce site, je l'ai suivi mais il n'affiche toujours
0
Incorporated Messages postés 597 Statut Membre 371
 
Ce qui m'étonne c'est que je ne voit pas de commande "Import" dans ton code ?
0
Look
 
Je n'ai pas mis le code en entier en fait car il y a beaucoup de chose dedans
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;


Mais les import sont bien la.
0
Incorporated Messages postés 597 Statut Membre 371
 
Quand est-il de la taille de ton bouton ? et de son nom ?

fenetre.setTitle ("Ubuntu Media Player");
    fenetre.setSize (700, 200);
0
Look
 
Il n'a pas de taille prédéfini

	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 ... ");
		
0
Look
 
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));  
  
  
 }
}
0
KX Messages postés 19031 Statut Modérateur 3 020
 
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 :

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
setContentPane
sur 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.
0