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 :

Question bête difference entre Panel et Container?


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut Question bête difference entre Panel et Container?
    Bonjour je me suis mis au interfaces graphique depuis un certains temps et la je me pose une question.

    La difference entre un Panel et un Container ?

    Quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Container c = getContentPane();
    ou
    Panel p = new Panel();
    et ensuite j'insere mes elements j'obtiens la même chose.

    PAr contre quand je fais : Container c = new Container(); ca change.

    Pourquoi?

    Je fais une petite application ou quand je clique sur un bouton ca change ce qui à dans ma fenetre. Pour cela je rend invisble des objet ne vaudrait - il pasmieux rendre invisible tout un panel et un autre visble ou une autre methode?

    Merci de votre aide et de vos lumières

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    en fait Panel est une classe héritant de Container.
    Or le contentPane est consititué dans la plupart des cas par un Panel (ou JPanel si tu utilises swing).
    Donc suivant le spréceptes de la programmation OO tu peux bien faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Container c = new JPanel();
    Ce qui donne bien un JPanel même si tu vois un Container (JPanel est alors appelé le type dynamique).

    par contre si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Container c = new Container();
    Tu auras juste un Container, rien de plus...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    Oki donc c'est juste une classe de Container le Panel.

    ET pour en revenir à ma question sur les differents affichage de mon application la methode est elle bonne?

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tout dépend du nombre d'éléments à rendre invisible.
    Si la fontionnalité reste la même autant rendre invisible quelques objets
    Si lam fontionnalité est différente mieux vaut créer un nouveau panel.

    Ensuite c'est à toi de voire.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    Merci bien de ta réponse.

    Je pense que dans mon cas faire un nouveau panel est mieux plusieurs bouton et autres objets sont changeant.

    Maintenant j'ai une autre question.

    AI je interet a creer des classes differentes extends de panel pour chaque panel que je creer, gérer les actions de ces differents panel dans leur classe et creer une classe fenetre qui regroupe tout mes panels?

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Oui, c'est plutôt recommandé

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    oki

    j'ai donc fais plusieur Jpanel dans ma frame.

    j'en inclut un au contentpane et le rend visible les autres invisibles.

    Quand je clique sur un bouton je rend invisible Le Jpanel en cours et ajoute un JPanel au contentpane, quand je le fais une fois ca fonctionne mais quand je reclique sur un autre bouton ca fonctionne plus ca change pas les JPanel je comprend pas trop.


    code 1er changement qui fonctionne
    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
     
    public void actionPerformed(ActionEvent e){
    		//this.setVisible(false);
    		if(this.Nsauvegarde.isSelected()){
    			this.setVisible(false);
    			this.f.newSauvegarde.setVisible(true);
    			this.f.setContentPane(this.f.newSauvegarde);			
    		}
    		if(this.Lsauvegarde.isSelected()){
    			this.setVisible(false);
    			this.f.setContentPane(this.f.listeSauvegarde);
    		}
    		if(this.Mliste.isSelected()){
    			this.setVisible(false);
    		}
    	}
    code du 2ieme qui fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void actionPerformed(ActionEvent e){
    		if("suivant".equals(e.getActionCommand())){
     
    		}
    		if("precedent".equals(e.getActionCommand())){
    			this.setVisible(false);
    			this.f.start.setVisible(true);
    			this.f.setContentPane(this.f.start);			
    		}
    	}

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    Bon j'ai resolu mon probleme.

    Dans ma fenetre pricipale j'ai cree un container auquel j'ia mis un CardLayout.

    j'ai ajouté tout mes panel a ce container et les rend visible quan dje veux

    voila

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/05/2012, 23h12
  2. Petite explication: Difference entre panel et buttongroup
    Par mihaispr dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 02/05/2009, 14h41
  3. Réponses: 5
    Dernier message: 17/03/2009, 20h59
  4. Réponses: 21
    Dernier message: 20/02/2006, 11h00
  5. [question] difference entre informix et db2
    Par geoffrey_k dans le forum DB2
    Réponses: 4
    Dernier message: 05/07/2004, 14h11

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