JAVA : Cacher/Afficher Container

[Résolu/Fermé]
Signaler
Messages postés
153
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
4 septembre 2013
-
Messages postés
153
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
4 septembre 2013
-
Bonjour,

ma JFrame se compose de deux container contenant chacun un bouton, l'un est visible au départ, l'autre non, le but et que lorsque je clique sur un bouton visible, le content Pane de celui ci ce cache et fasse apparaitre l'autre et vice versa.
Je n'y arrive pas pourriez vous m'aider ?
Merci d'avance

code :


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class IHMJeu421 extends JFrame {

JButton bouton1;
JButton bouton2;
Container cMenu;
Container cJeux;



public IHMJeu421(String nomFenetre){
super(nomFenetre);
setSize(1000,500);

cMenu = getContentPane();
cJeux = getContentPane();


bouton1 = new JButton( "B1" );
bouton2 = new JButton( "B2" );



boutonAffB1 baB1 = new boutonAffB1();
bouton1.addActionListener(baB1);

BoutonAffB2 baB2 = new BoutonAffB2();
bouton2.addActionListener(baB2);




this.setVisible(true);
this.CreationFenetre();


}

private void CreationFenetre(){





JPanel jpBouton = new JPanel();
jpBouton.setLayout(new GridLayout(1,1));
jpBouton.add(bouton1);


JPanel jpMenu = new JPanel();
jpMenu.setLayout(new BorderLayout());
jpMenu.add(jpBouton,BorderLayout.CENTER);

JPanel jpBouton1 = new JPanel();
jpBouton1.setLayout(new GridLayout(1,1));
jpBouton1.add(bouton2);


JPanel jpJeux = new JPanel();
jpJeux.setLayout(new BorderLayout());
jpJeux.add(jpBouton1,BorderLayout.CENTER);

cJeux.add(jpJeux);
cMenu.add(jpMenu);

cMenu.setVisible(true);
cJeux.setVisible(false);


}

public class BoutonAffB2 implements ActionListener{

public void actionPerformed(ActionEvent e){

cMenu.setVisible(false);
cJeux.setVisible(true);


}
}
public class boutonAffB1 implements ActionListener{

public void actionPerformed(ActionEvent f){

cMenu.setVisible(true);
cJeux.setVisible(false);




}
}

}



2 réponses

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 861
J'avoue que j'ai pas mal galéré pour y arriver ^^
Voici un code qui fait (à peu près) ce que tu veux, mais il a pas mal changé !

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class AlternativeButton extends JButton
{
    private static final long serialVersionUID = 1;

    public AlternativeButton(String texte)
    {
        super(texte);        
    }
    
    public void setAlternative(final AlternativePanel toFalse, final AlternativePanel toTrue)
    {
        addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                toFalse.setVisible(false);
                toTrue.setVisible(true);
            }            
        });
    }
}

class AlternativePanel extends JPanel
{
    private static final long serialVersionUID = 1;    
    
    public AlternativePanel(AlternativeButton button, boolean visible)
    {
        super(new BorderLayout());
        add(button,BorderLayout.CENTER);
        setVisible(visible);
    }
}

public class IHMJeu421 extends JFrame 
{
    private static final long serialVersionUID = 1L;
    
    public IHMJeu421()
    {
        setSize(300,300);
        
        AlternativeButton bouton1 = new AlternativeButton("B1");
        AlternativeButton bouton2 = new AlternativeButton("B2");

        AlternativePanel jpMenu = new AlternativePanel(bouton1,true);
        AlternativePanel jpJeux = new AlternativePanel(bouton2,false);
        
        bouton1.setAlternative(jpMenu, jpJeux);
        bouton2.setAlternative(jpJeux, jpMenu);    

        setLayout(new BorderLayout());
        add(jpMenu,BorderLayout.NORTH);
        add(jpJeux,BorderLayout.SOUTH);
        
        setTitle("Jeu 421");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    
    public static void main(String...args)
    {
        new IHMJeu421();
    }
}
Messages postés
153
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
4 septembre 2013
14
Olala tous sa pour faire ce que je veux .... je croyais pas que sa devais etre si compliqué :O
En tout cas merci d'avoir passer du temps sur mon problème