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 :

Imbrication de JPanel / Appel entre classe


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Par défaut Imbrication de JPanel / Appel entre classe
    Bonsoir à toutes et tous,

    Voila un petit moment que je vous lis et c'est aujourd'hui à mon tours de vous solliciter.
    Je démarre la POO et j'ai une question sur les appels entre classes.
    En l'occurence, je souhaiterai que ma Frame soit composée de plusieurs JPanel, dont un issu d'une autre classe.
    Je tourne en rond depuis un moment. Si un œil extérieur pouvait m'indiquer où est-ce que cela coince je vous en serais reconnaissant.

    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
    public class PanelPrincipal extends JPanel {
     
    	private JFrame fenetre;
    	private JPanel panelNord = null;
    	private PanelSecondaire panelCentre = null;
     
    	public PanelPrincipal() {
     
    		this.fenetre = new JFrame("Test application graphique JPanel impbriqués");
     
    		this.fenetre.addWindowListener (new WindowAdapter()
    		{ public void windowClosing(WindowEvent e){ 
    			System.exit(0);}
    		} );
     
    		Container container = this.fenetre.getContentPane();
    		BorderLayout disposition = new BorderLayout();
     
    		container.setLayout(disposition);
    		container.setPreferredSize(new java.awt.Dimension(800, 600));
     
    		fenetre.setSize(800, 600);
    		fenetre.setLocationRelativeTo(getParent());
     
    		container.add(getPanelNord(), BorderLayout.NORTH);
    		container.add(getPanelCentre(), BorderLayout.CENTER);
     
    		this.fenetre.pack();
    		this.fenetre.setVisible(true);
     
    	}
     
    	public JPanel getPanelNord() {
    		if(panelNord == null) {
    			panelNord = new JPanel();
    			panelNord.setBackground(Color.ORANGE);
    		}		
    		return panelNord;
    	}
     
    	public PanelSecondaire getPanelCentre() {
    		if(panelCentre == null) {
    			panelCentre = new PanelSecondaire();
    		}
    		return panelCentre;
    	}
    }
    Voila pour la classe contenant la Frame

    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
    public class PanelSecondaire extends JPanel {
     
    	private JPanel panelSecondaire = null;
     
    	public PanelSecondaire() {
     
    		getPanelSecondaire();
     
    	}
     
    	public JPanel getPanelSecondaire() {
    		if(panelSecondaire == null) {
    			panelSecondaire = new JPanel();
    			panelSecondaire.setBackground(Color.RED);
    			panelSecondaire.setSize(640,480);			
    		}
    		return panelSecondaire;
    	}
     
     
     
    }
    et voila pour la classe que je voudrai intégrer.

    D'avance merci pour vos conseils avisés
    Cordialement

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Par défaut
    Bonjour,
    Je ne comprends vraiment pas.
    Je travaille avec Eclipse et lorsque je pars en débogage, je passe pas dans mes méthodes. Mais je ne vois pas pourquoi mon objet ne s'instancie pas.
    A moins que je ne cherche pas du bon côté et que cela vienne juste d'un problème d'affichage.
    Merci d'avance pour vos réponses.
    Cordialement.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur java, .Net
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur java, .Net

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Par défaut
    J'ai modifié ton constructeur (suppression de la méthode) et ton get (il retourne maintenant un JPanel)

    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
    import java.awt.Color;
     
    import javax.swing.JPanel;
     
    public class PanelSecondaire extends JPanel {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 8392692532378334883L;
    	private JPanel panelSecondaire = null;
     
    	public PanelSecondaire() {
     
    		//getPanelSecondaire();
     
    	}
     
    	public JPanel getPanelSecondaire() {
    		if(panelSecondaire == null) {
    			panelSecondaire = new JPanel();
    			panelSecondaire.setBackground(Color.RED);
    			panelSecondaire.setSize(640,480);			
    		}
    		return panelSecondaire;
    	}
     
     }
    Et j'ai fait les modifications qui en découlaient dans ton autre classe.

    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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class PanelPrincipal extends JPanel {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = -4626921229339895194L;
    	private JFrame fenetre;
    	private JPanel panelNord = null;
    	private JPanel panelCentre = null;
     
    	public PanelPrincipal() {
     
    		this.fenetre = new JFrame("Test application graphique JPanel impbriqués");
     
    		this.fenetre.addWindowListener (new WindowAdapter()
    		{ public void windowClosing(WindowEvent e){ 
    			System.exit(0);}
    		} );
     
    		java.awt.Container container = this.fenetre.getContentPane();
    		BorderLayout disposition = new BorderLayout();
     
    		container.setLayout(disposition);
    		container.setPreferredSize(new java.awt.Dimension(800, 600));
     
    		fenetre.setSize(800, 600);
    		fenetre.setLocationRelativeTo(getParent());
     
    		container.add(getPanelNord(), BorderLayout.NORTH);
    		container.add(getPanelCentre(), BorderLayout.CENTER);
     
    		this.fenetre.pack();
    		this.fenetre.setVisible(true);
     
    	}
     
    	public JPanel getPanelNord() {
    		if(panelNord == null) {
    			panelNord = new JPanel();
    			panelNord.setBackground(Color.ORANGE);
    		}		
    		return panelNord;
    	}
     
    	public JPanel getPanelCentre() {
    		if(panelCentre == null) {
    			panelCentre =  new PanelSecondaire().getPanelSecondaire();
    		}
    		return panelCentre;
    	}
     
    	public static void main(String args[]) {
    		new PanelPrincipal();
    	}
    }

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Par défaut
    Je m'incline bien bas pour vous remercier cher Gandalf72000.

    Par contre j'ai du mal à comprendre. Je pensais à tord qu'il fallait passer obligatoirement par le constructeur de l'objet.

    Je me doutais aussi que mon panel n'était pas renvoyé.

    En tout cas un grand MERCI pour le coup de pouce.

    Décidément rien ne résiste au club des professionnels de l'informatique. lol

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

Discussions similaires

  1. appel mutuel entre classe et structure
    Par allbundy dans le forum Débuter
    Réponses: 8
    Dernier message: 07/04/2014, 12h14
  2. [PHP 5.3] Problème d'appel entre 2 class
    Par yasen77 dans le forum Langage
    Réponses: 1
    Dernier message: 25/06/2012, 16h25
  3. appel entre class en java
    Par cesear89 dans le forum NetBeans
    Réponses: 16
    Dernier message: 07/11/2010, 01h34
  4. Appel de Fonction entre classes
    Par likenoother dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2006, 14h37
  5. appel entre méthodes de meme classe
    Par frmaniako dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2004, 22h55

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