Passage d'un JPanel à un autre

Résolu
midou4u Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
midou4u Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir à tous :)

Je me permets de poster ce petit message car je n'ai plus de solution à mon problème, je m'explique :

J'ai une fenetre ( JFrame )
J'ai un JPanel ( pane ) contenant un JButton(button) et un JLabel(label)
J'ai un JPanel ( pane2 ) que je veux afficher à l'écran après le clic sur le bouton du pane précédent

Alors dans un premier temps tout se passe bien, mon bouton du pan_1 s'affiche correctement à l'écran mais lorsque je clic dessus, le pan_1 disparait bien de l'écran mais le pane2 n'apparaît malheureusement pas. J'ai essayé de simplifier au maximum mon problème qui est légèrement plus complexe que ça en espérant qu'il soit plus facile à identifier.

Voici le code source :

package tkharbi9a;


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


public class Main {


        public static final JFrame frame = new JFrame("exemple");
        public static final JButton button = new JButton("cliquer ici");
        public static final JLabel label = new JLabel("un petit texte");
        public static final JPanel pane = new JPanel();
        //********************************************************
        public static final JLabel label2 = new JLabel("2ème interface");
        public static final JPanel pane2 = new JPanel();

    public static void main(String[] args) {

        
        pane.add(button);
        pane.add(label);
        frame.getContentPane().add(pane2, BorderLayout.CENTER);
        frame.add(pane);
        frame.setSize(400,200);
        pane.setVisible(true);
        frame.setVisible(true);
        //**********************************************
        
        pane2.add(label2);
        frame.getContentPane().add(pane, BorderLayout.CENTER);
        frame.setSize(400,200);
        frame.setVisible(true);
        pane2.setVisible(false);

        button.addActionListener(new EcouteurClick());

    }
}





et voici le code source de la classe d'écouteur :



package tkharbi9a;


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

public class EcouteurClick implements ActionListener{

	
	Main m=new Main();



	public void actionPerformed(ActionEvent e) {

		JButton button=(JButton) e.getSource();


		m.pane.setVisible(false);
                m.pane2.setVisible(true);





	}



}




Ma question : Quelqu'un aurait-il une solution à m'apporter pour pouvoir changer lJPanel (pane2) en cliquant sur un bouton ?

Merci pour votre aide.


Cordialement,




A voir également:

1 réponse

choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
salut

Je croix que ton problème vient du fait que tout ton code se trouve dans ta classe main..

Tu dois écrire une classe qui étend (extends) un objet de la classe JFrame.

Dans cette classe, tu retrouve les JPanes comme attribut (pas obligatoirement static),

Dans le constructeur de cette classe, tu peux alors reprendre le code de la première partie qui affiche le premier panel.

Chaque panel possède comme attributs ses boutons et label propres. Le plus simple est d'avoir un attribut qui contiendra la frame mère. Cet information sera transmise en argument avec leur constructeur.

Dans ta classe frame, tu crées alors des méthode publique que tes panels pourront appeler via le listener de leur bouton.

Dans ta classe main, tu ne devras alors qu'instancier la classe Frame.

chaque panel pourra alors utiliser les méthodes écrites dans le frame pour intéragir entre eux..

-1
midou4u Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci infiniment cher ami pour cette réponse que je trouve très claire et très didactique !
0