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 :

CardLayout - changement de panel


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut CardLayout - changement de panel
    Bonjour voici mon probleme

    alors j'ai une première class avec mon main qui défini le la JFrame et le CardLayout,

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    package Accueil;
     
    import java.awt.CardLayout;
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.io.IOException;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
     
     
     
     
    public class Accueil {
     
    	//déclare les composants
    	JFrame cadre;
     
    	//declare les class utiliser 
    	public voirRecette recette;
    	public voirAccueil accueil; 
     
    	//déclare un cardLayoute et un panel
    	public CardLayout gestionnaireDesCartes = new CardLayout();
    	public JPanel panneauPrincipal = new JPanel();
     
     
    	//récupere la dimmension de l'ecran
    	Toolkit kit = Toolkit.getDefaultToolkit();
    	Dimension dimensionEcran = kit.getScreenSize();
    	int largeur = dimensionEcran.width;
    	int hauteur = dimensionEcran.height;
     
     
    	Accueil() throws IOException
    	{
     
    		//Cree la Frame
    		cadre = new JFrame();
     
    		//Cree le panel associe
    		panneauPrincipal = new JPanel();
    		//Cree les class d'affichage
    		accueil = new voirAccueil();
    		recette = new voirRecette();
     
    		//affecte un titre au cadre
    		cadre.setTitle("BookCook v.1");
    		//Affecte la fenetre au milieu de l'écran et lui affecte une taille
    		cadre.setBounds((largeur-900)/2, (hauteur-650)/2,900,650);
     
     
    		//ajoute le panneua principal à la frame
    		cadre.add(panneauPrincipal);
    		//parametre le cardLayout
    		panneauPrincipal.setLayout(gestionnaireDesCartes); 
    		panneauPrincipal.setBounds(0,0,900,650); //taille de la carte
    		panneauPrincipal.setOpaque(false);//rend le pannea tranparent 
    		panneauPrincipal.add(accueil, "accueil");//renvoie a une carte
    		panneauPrincipal.add(recette, "recette");//renvoie a une carte
     
    		//rend la fenetre visible 
    		cadre.setVisible(true);
    		//bloque le redimentionnement
    		cadre.setResizable(false);
    		//ferme corectement l'application
    		cadre.setDefaultCloseOperation(cadre.EXIT_ON_CLOSE);
     
    	}
     
     
    	//permet l'affichage de la fenêtre
    	public static void main(String[] args)
    	{
    		try {
    			Accueil accueil = new Accueil();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    }
    grâce a cette class j'affiche mon premier panel nomme voir accueil
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
    package Accueil;
     
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.image.*;
    import java.io.*;
     
    import javax.imageio.*;
    import javax.swing.*;
     
     
     
     
     
     
     
    public class voirAccueil extends JPanel implements MouseListener, ActionListener
    {
    	Accueil parent; //une référence à la connection
     
    	//declare les variables
    	private BufferedImage image, image2, image3, image4, image5, image6, image7, image8, image9, image10, image11, image12 , image13; 
     
    	//déclare les bouttons 
    	JButton recherche, liste, ajoutRecette, categorie, accesSite, generique;
     
    	Color couleur = Color.BLACK;
     
    	voirAccueil() throws IOException
    	{
    		//insert uen image de fond 
    		image = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\fondAccueil.png"));
     
    		//lit les image pour les inserer au boutton
    		image2 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Brechercher.png"));
    		image3 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bliste.png"));
    		image4 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bcategorie.png"));
    		image5 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BajoutRecette.png"));
    		image6 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BaccesSite.png"));
    		image7 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bgenerique.png"));
     
    		//lit les images pour les inserer au bouton lors du passage de la souris
    		image8 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Brechercher2.png"));
    		image9 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bliste2.png"));
    		image10 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bcategorie2.png"));
    		image11 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BajoutRecette2.png"));
    		image12 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BaccesSite2.png"));
    		image13 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bgenerique2.png"));
     
    		//Cree les bouton et ajoute l'image charger préalablement
    		recherche = new JButton(new ImageIcon(image2, null));
    		liste = new JButton(new ImageIcon(image3, null));
    		ajoutRecette = new JButton(new ImageIcon(image4, null));
    		categorie = new JButton(new ImageIcon(image5, null)); 
    		accesSite = new JButton(new ImageIcon(image6, null));
    		generique = new JButton(new ImageIcon(image7, null));
     
    		//desactive le gestionnaire du panel
    		setLayout(null);
    		//ajoute les bonton au panel
    		add(recherche).setBounds(200, 200, 218, 47);
    		add(liste).setBounds(476, 200, 218, 47);
    		add(ajoutRecette).setBounds(200, 305, 218, 47);
    		add(categorie).setBounds(476, 305, 218, 47);
    		add(accesSite).setBounds(200, 410, 218, 47);
    		add(generique).setBounds(476, 410, 218, 47);
     
    		//modifie l'apparance des bouton pour arrondir le bouton, le rendre transparent et enlever la bordure
    		recherche.setFocusPainted(false);
    		recherche.setContentAreaFilled(false);
    		recherche.setBorderPainted(false);
    		liste.setFocusPainted(false);
    		liste.setContentAreaFilled(false);
    		liste.setBorderPainted(false);
    		ajoutRecette.setFocusPainted(false);
    		ajoutRecette.setContentAreaFilled(false);
    		ajoutRecette.setBorderPainted(false);
    		categorie.setFocusPainted(false);
    		categorie.setContentAreaFilled(false);
    		categorie.setBorderPainted(false);
    		accesSite.setFocusPainted(false);
    		accesSite.setContentAreaFilled(false);
    		accesSite.setBorderPainted(false);
    		generique.setFocusPainted(false);
    		generique.setContentAreaFilled(false);
    		generique.setBorderPainted(false);
     
    		//ajoute un listener au bouton
    		recherche.addMouseListener(this);
    		liste.addMouseListener(this);
    		ajoutRecette.addMouseListener(this);
    		categorie.addMouseListener(this);
    		accesSite.addMouseListener(this);
    		generique.addMouseListener(this);
    		//ajoute un listener pour le clic sur un bouton
    		recherche.addActionListener(this);
    		liste.addActionListener(this);
    		ajoutRecette.addActionListener(this);
    		categorie.addActionListener(this);
    		accesSite.addActionListener(this);
    		generique.addActionListener(this);
    	}
     
    	//positionne l'image
    	 public void paintComponent(Graphics surface) 
    	 {
    	      surface.drawImage(image, 0, 0, 900, 650, null);   
    	  }
     
     
    	public void mouseClicked(MouseEvent arg0) {}
    	public void mouseEntered(MouseEvent evt) 
    	{
    		//permet de savoir si une action c'est derouler sur le composant
    		Object source = evt.getSource();
    		//permet de changer l'image quand la souris passe au desus du bouton
    		if(source == recherche){recherche.setIcon(new ImageIcon(image8, null));}
    		if(source == liste){liste.setIcon(new ImageIcon(image9, null));}
    		if(source == ajoutRecette){ajoutRecette.setIcon(new ImageIcon(image11, null));}
    		if(source == categorie){categorie.setIcon(new ImageIcon(image10, null));}
    		if(source == accesSite){accesSite.setIcon(new ImageIcon(image12, null));}
    		if(source == generique){generique.setIcon(new ImageIcon(image13, null));}
    	}
    	public void mouseExited(MouseEvent evt)
    	{
    		//permet de savoir si une action c'est derouler sur le composant
    		Object source = evt.getSource();
    		//permet de changer l'imaga quand la souris sort du champs du bouton
    		if(source == recherche){recherche.setIcon(new ImageIcon(image2, null));}
    		if(source == liste){liste.setIcon(new ImageIcon(image3, null));}
    		if(source == ajoutRecette){ajoutRecette.setIcon(new ImageIcon(image5, null));}
    		if(source == categorie){categorie.setIcon(new ImageIcon(image4, null));}
    		if(source == accesSite){accesSite.setIcon(new ImageIcon(image6, null));}
    		if(source == generique){generique.setIcon(new ImageIcon(image7, null));}
    	}
    	public void mousePressed(MouseEvent arg0) {}
    	public void mouseReleased(MouseEvent arg0) {}
     
    	public void actionPerformed(ActionEvent evt) 
    	{
    		//permet de savoir si une action c'est derouler sur le composant
    		Object source = evt.getSource();
    		//permet de realiser une action si un evenement est detecté
    		if(source == recherche)
    		{
    			parent.gestionnaireDesCartes.show(parent.panneauPrincipal,"accueil");
    		}
    	}  
     
     
    }
    et a partir d'un des boutons de cette 2eme class voirAccueil je voudrais afficher le 2eme bouton mais actionListener ne fonctionne pas comme il faut
    voici l'erreur obtenu
    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
     
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at Accueil.voirAccueil.actionPerformed(voirAccueil.java:149)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    dans ta classe voirAccueil
    tu n'initialises pas cet objet, et donc quand tu lui fais appel dans l'actionPerformed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent.gestionnaireDesCartes.show(... )
    il te renvoie la NullPointerException

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    donc je doit mettre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Accueil parent = null;

  4. #4
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    il contient déjà null, donc c'est pas la peine. ce que je voulais dire c'est que tu ne l'instancie pas dans ta classe.

    tu pourrais par exp modifier ton constructeur voirAccueil pour lui passer en argument un objet de la classe Accueil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    voirAccueil(Accueil parent) throws IOException
    {
        this.parent = parent;
        ....
    }
    et dans la classe Accueil, quand tu instancie ton objet voirAccueil, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    accueil = new voirAccueil(this);
    pour passer la référence à l'objet Accueil actuel

    et puis une remarque, les classes en java commencent généralement par des majuscules, c'est une norme de codage

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    super sa marche merci beaucoup

    ps: merci pour le petit conseille des class

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

Discussions similaires

  1. Problème de changement de Panel avec CardLayout
    Par japhettchabao dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 02/01/2015, 10h48
  2. Question CardLayout (Changement Panel)
    Par moxxxy dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 24/02/2010, 11h11
  3. Changement de Panel
    Par arsenik7 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/01/2006, 10h15
  4. [AWT]Changement de panel dans un panel
    Par guipom dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 27/12/2004, 16h57
  5. [JScrollPane] Changement du panel
    Par -=Spoon=- dans le forum Composants
    Réponses: 5
    Dernier message: 10/12/2004, 00h35

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