JAVA : Cacher/Afficher Container

Résolu/Fermé
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 - Modifié par Reisors le 26/02/2012 à 13:11
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 - 26 févr. 2012 à 17:12
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);




}
}

}



A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 févr. 2012 à 15:28
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();
    }
}
0
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 14
26 févr. 2012 à 17:12
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
0