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

Agents de placement/Fenêtres Java Discussion :

Gérer des JPanel superposés


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut Gérer des JPanel superposés
    Bonjour,

    J'ai plusieurs objets de type JPanel que j'ajoute a mon JPanel principal . J'aimerais que lorsqu'on clique sur le panneau jaune, qu'il soit efface du panneau principal. Auriez-vous une idee?

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    package vue_15_03_13;
     
    import java.awt.Color;
    import java.awt.Dimension;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class AdjacentPanels {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		JFrame frame = new JFrame ();
    		frame.setSize(400, 500);
    		frame.setVisible(true);
     
    		JPanel contentPane = new JPanel ();
    		frame.setContentPane(contentPane);
     
     
    		JPanel panel1 = new JPanel ();
    		panel1.setPreferredSize(new Dimension (50,50));
    		panel1.setBackground(Color.GREEN);
     
    		JPanel panel2 = new JPanel ();
    		panel2.setBackground(Color.RED);
    		panel2.setPreferredSize(new Dimension (50,50));
     
    		JPanel panel3 = new JPanel ();
    		panel3.setBackground(Color.YELLOW);
    		panel3.setPreferredSize(new Dimension (50,50));
     
    		YellowPaneListener yel = new YellowPaneListener (contentPane);
    		panel3.addMouseListener(yel);
     
    		contentPane.add(panel1);
    		contentPane.add(panel2);
    		contentPane.add(panel3);
    	}
     
    }
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    package vue_15_03_13;
     
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.JPanel;
     
    public class YellowPaneListener implements MouseListener{
     
    	private JPanel pane;
     
    	public YellowPaneListener (JPanel pane){
     
    		this.pane = pane;
    	}
     
     
    	@Override
    	public void mouseClicked(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    		System.out.println ("You clicked on a yellow pane");
     
     
    	}
     
    	@Override
    	public void mouseEntered(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mouseExited(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mousePressed(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mouseReleased(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
     
     
     
     
     
    }

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,
    Tu peux par exemple définir contentPane comme variable d'état de ta classe adjacentPanel c'est à dire en dehors de la méthode main() afin de pouvoir y accéder dans la méthode mouseClicked dans laquelles tu rajoutes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    contentPane.remove(((JPanel)e.getSource());
    pour enlever le Panel sur lequel tu viens de clicker
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    	@Override
    	public void mouseClicked(MouseEvent arg0) {
    		// TODO Auto-generated method stub
                    contentPane.remove((JPanel)e.getSource());
    		System.out.println ("You clicked on a yellow pane");
     
     
     
    	}
    [/QUOTE]

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 149
    Par défaut
    Salut,

    Je te conseille d'utiliser un CardLayout. C'est très simple à utiliser et ça te permet de superposer autant de JPanel que tu veux et tu peux passer de l'un à l'autre sois en une ligne de code ou par avec des actionListener.

    Voila comment l'utiliser:

    Il faut commencer par déclarer le layout (contrairement aux autres) et de créer une petite liste qui regroupe tous tes panels puis créer un JPanel conteneur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            public CardLayout cl = new CardLayout();
    	String [] listContent = {"panel1", "panel2", "panel3"};
    	public JPanel content = new JPanel();
    Ensuite tu assigne "cl" comme layout à "content":

    Et pour finir tu ajoutes tes composants en précisant à quelle "couche" il se trouve:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	content.add(panel1, listContent[0]);
    	content.add(panel2, listContent[1]);
    	content.add(panel3, listContent[2]);
    "listContent[0]" signifie que le composant ajouté sera en haut de la pile et donc sera visible par défaut.

    Et pour finir, pour changer de panel tu as juste à entrer cette ligne avec le numéro de la couche de ton choix:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cl.show(content, listContent[0]);
    Bien-sur tu peux l'utiliser n'importe où (ou presque^^) mais le plus souvent elle est entrée dans un actionListener.

    Voila j'espère que ça t'a aidé!

Discussions similaires

  1. Gèrer des fichiers (documents .doc) via Struts.
    Par LESOLEIL dans le forum Struts 1
    Réponses: 7
    Dernier message: 22/08/2005, 17h26
  2. [XSLT] Comment procéder pour gérer des langues ?
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/03/2005, 12h01
  3. [JPanel] superposer des JPanel
    Par Galima dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 10/06/2004, 19h25
  4. Comment (si possible) gérer des dll en Asm?
    Par @drien dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 06/01/2004, 16h59
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 13h07

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