IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Changer le JPanel (Accès)


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Par défaut Changer le JPanel (Accès)
    Bonjour, je débute en java et je souhaiterais utilisé JPanel pour mes différentes pages ou plutôt interfaces...

    Voici la structure de mon projet :

    - La Class Main qui comporte la méthode main(). Cette Class instancie une fenêtre de ma Class Fenetre, un Jpanel de ma Class Panneau1. Elle ajoute le JPanel de panneau1 dans la JFrame.

    - La Class Fenetre extends JFrame

    - La Class Panneau1 JPanel implements ActionListener : contient un bouton "changer de panneau"

    - La Class Panneau2 JPanel implements ActionListener : contient un bouton "changer de panneau"

    Je souhaiterais donc pourvoir changer de panel via les boutons contenu dans ces même Class...

    Mais je ne vois pas comment... Si quelqu'un pouvais me guider, j’appréciais

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Par défaut
    Tu pourrais créer un listener qui écouterait les actions sur les boutons en prenant un entier qui permet de différencier les boutons. Ça donnerait un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class ControllerButton implements ActionListener
    {
    	private int numButton;
    	private Fenetre vue;
     
    	public ControllerButton(Fenetre vue, int numButton)
    	{
    		this.vue = vue;
    		this.numButton = numButton;
    	}
     
    	@Override
    	public void actionPerformed(ActionEvent e)
    	{
    		vue.changePanel(numButton);
    	}		
    }
    Dans ta classe Fenetre, tu rajoutes les listeners à tes boutons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    btnPanel1.addActionListener(new ControllerButton(this, 1));
    btnPanel2.addActionListener(new ControllerButton(this, 2));
    Et concernant le code pour changer de panel, j'ai ça qui marche (procédure de la classe Fenetre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public void changePanel(int num)
    {
    	if (currentPane != null)
    	{
    		// on retire le panel courrant
    		getContentPane().remove(currentPane);	
     
    		// on cherche celui qui va le remplacer
    		switch (num)
    		{
    			case 1: 
    			{
    				currentPane = pnl1; break;
    			}
    			case 2: 
    			{
    				currentPane = pnl2; break;
    			}
    		}
    		// et on insert
    		getContentPane().add(currentPane, BorderLayout.CENTER); 	
     
    		revalidate();
    		repaint();
    	}
    }
    currentPane est le JPanel courant, c'est celui que tu changes en fonction de tes besoins. Tu l'initialises dans le constructeur et c'est parti.

    EDIT: je viens de voir que ce sont les panels qui ont les boutons. Ça ne change pas grand chose. Tu rajoutes dans les constructeurs de tes Panneaux une référence vers la Fenetre et le résultat reste le même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // constructeur de Panneau1
    public Panneau1(MaFenetre vue)
    {
    	// ... ton code ...
     
    	btnChangerPanel.addActionListener(new ControllerButton(vue, 1));
     
    	// ... ton code ...
    }

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu peux également utiliser un CardLayout pour changer le JPanel affiché très facilement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Par défaut
    Merci à vous deux pour vos solutions ! Je vais regarder à sa

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [NetBeans 5.5] Changer de jPanel dans un jFrame ?
    Par MAXXPER dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 13/11/2006, 07h18
  2. changer chemin d'accès
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 06/11/2006, 13h18
  3. JPanel, changer le JPanel d'un Container
    Par kichemans dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/01/2006, 12h58
  4. [Swing]probleme pour changer de JPanel
    Par mereyj dans le forum Composants
    Réponses: 8
    Dernier message: 19/06/2005, 12h55
  5. Changer de JPanel en cours d'applications
    Par MrEddy dans le forum Composants
    Réponses: 3
    Dernier message: 12/05/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo