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
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 559 Date d'inscription jeudi 31 mai 2018 Statut Membre Dernière intervention 28 août 2018 371
31 mai 2018 à 15:27
0
Je me suis déjà aidé de ce site, je l'ai suivi mais il n'affiche toujours
0
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:37
Ce qui m'étonne c'est que je ne voit pas de commande "Import" dans ton code ?
0
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 559 Date d'inscription jeudi 31 mai 2018 Statut Membre Dernière intervention 28 août 2018 371
31 mai 2018 à 15:44
Quand est-il de la taille de ton bouton ? et de son nom ?

fenetre.setTitle ("Ubuntu Media Player");
    fenetre.setSize (700, 200);
0
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
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 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
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