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 :

Les couches : JPanel / JRoot / JLayredPane / JContentPane / JMenuBar / GlassPane


Sujet :

AWT/Swing Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut Les couches : JPanel / JRoot / JLayredPane / JContentPane / JMenuBar / GlassPane
    salut !

    J'ai pu constaté toute la compléxité de la class SWING, avec ces multiples couches a ne rien ni comprendre !
    Bref, Le programmeur de ce que j ai pu saisir ne doit bosser que sur deux couches,

    - la ContentPane,
    et
    - la couche JApplet.

    Alors un truc tout stupide, tellement stupide qu'il donne des envies de meurtres

    Je veux colorier la couche ContentPane en Vert & la couche JApplet en jaune alors je fais tout betement, comme les tuto l indique :

    import javax.swing.*;
    import java.awt.color;

    public class exo extends JApplet
    {
    public void init()
    {
    this.setBackground(Color.yellow); // couche JPanel
    getContentPane().setBackground(Color.green); // couche ContentPane
    }
    }
    alors la qu'on m'explique pkoi la couche JPanel n est pas teintée !!!!
    et aussi, a quel objet fait référence this, qui est supposé etre l'instance de classe en cours d'utilisation ...


    merci de m expliquer !

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    J'ai pu constaté toute la compléxité de la class SWING
    *mdr* tu n'as rien vu encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class test extends JApplet{
     
        public test(){
            init();
        }
     
        public void init() {
            this.setBackground(Color.yellow); // couche JPanel
            getContentPane().setBackground(Color.green); // couche ContentPane
        }
     
    }
    c'est normal que tu ne vois pas de jaune car quant tu fais :
    this.setBackground(Color.yellow);
    getContentPane().setBackground(Color.green);


    le ContentPane prend toute la place et recouvre integralement l'applet.


    et aussi, a quel objet fait référence this, qui est supposé etre l'instance de classe en cours d'utilisation ...
    c'est le cas, le this fait reference au japplet.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    ouais, mais quand je commente le "getContent ... " et bun je vois pas de jaune !
    j'débute en java, mais bon lol, je suis pas null a ce point lol

    le ContentPane prend toute la place et recouvre integralement l'applet.
    amicalement.

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    le contentPane (de classe Container) est Opaque par defaut, et a une couleur grise.

    demonstration pour voir le jaune de l'applet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void init() {
            this.setBackground(Color.yellow); 
     
            JPanel monpanneau = new JPanel();
            monpanneau.setBackground(Color.green);
            monpanneau.setOpaque(false); //rend le panneau transparant
            // du coup tu verras la couleur jaune de l'applet
     
            setContentPane(monpanneau);
        }

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    en effet, fallait le savoir ca !

    il est opaque et a une couleur grise par defaut !

    merci, une petite derniere question !

    setContentPane(monpanneau);
    sous entends que tu integres le Jpanel nomé monpanneau sur la couche : ContentPane !

    n'est ce pas ?

    mais alors, que produit :

    getContentPane().add(monpanneau) ?
    visuellement je n obtient pas le meme resultat !

    merci.

  6. #6
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    le ContentPane est le contenant de l'applet. c'est celui qui va contenir les composants visuels (JButton, JLabel ...etc...)

    Il est tres primitif par defaut (c'est un Container, peu de methode)

    donc soit tu le remplace (avec setcontentPane)
    soit tu lui ajoutes des composants (getContentPane().add(...));

    personnellement je le remplace toujours.



    sous entends que tu integres le Jpanel nomé monpanneau sur la couche : ContentPane !
    ne parle pas de couche, parle plutot d'objet ou de contenant.

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Juillet 2003
    Messages : 79
    Par défaut
    pas tout a fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentPane(monpanneau);
    remplace le contentPane de ton Applet par le panel

    tandis que ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getContentPane().add(monpanneau)
    ca ajoute le panel dans le contentPane
    Ton contentPane est donc toujours la et quand tu fais monPanneau.setOpaque(false) c'est donc le BackGround du contentPane que tu vas voir dans ce cas la, donc il est normal qu'il ne se passe pas la meme chose parce que ca ne fait pas la meme chose.

    EDIT : zut à 1min pret

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    merci a tous,
    je cerne un peu mieux le truc.

    entre autre, thx pour l info aussi :

    donc soit tu le remplace (avec setcontentPane)
    soit tu lui ajoutes des composants (getContentPane().add(...));

    personnellement je le remplace toujours.
    J'ai pu constaté toute la compléxité de la class SWING
    *mdr* tu n'as rien vu encore

    j'espere qu'avec autant de difficulté ... ca la peine de se lancer dedans !
    @++

  9. #9
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    Oui ca vaut la peine.

    regarde le composant la : http://developpez.net/forums/showthread.php?t=371414

    swing est le plus complet en termes de quantité de composants visuels.
    et c'est aussi celui qui permet de faire ces propres composants.

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    ouais ouais,
    j'venais tout juste de l'voir, il cartonne au point de vue design ...c'est clair, simple & jolie,

    le probleme, c'est que je mettrais des mois a faire ca ! j'ai pas encore trouvé de Wysewyg, et de critiques associés ... a savoir si c'est performant, stable ect...

    enfin, bon ... mais j'avoue que le composant est chouette !

  11. #11
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    performant
    si tu es en jvm 1.6 alors pas de soucis de performance, ce sont les mauvaises langues qui disent que swing est lent. il est plus lent que awt swt mais bien assez pour les applications.

    Wysewyg
    tu peux utiliser l'editeur matisse de netbeans ou le plugin visualeditor de eclipse.

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    Wysiwyg ...

    tu en utilises un toi ?

  13. #13
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    oui, matisse

    c'est un gros gain de temps.

    (et puis quand vraiment il y a besoin je le fais a la main)

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    Ok, j vais arreter de me casser la tete alors, ...
    j te remercie eclesia, j vais le dowload
    @ bientot

  15. #15
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    heu... vu que tu debute, il est bon de se casser la tete dessus au moins quelques temps.

    c'est pour ton bien

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    ouais mais ca me saoul de me fighter avec le Layout ! ca fait trois semaines
    c'est une horreur ce truc ...

    j'vais pas perdre mon temps pour si peu ?! ... non ?

    le wysiwyg c'est juste en ce qui concerne l'aspect visuel, le 'tappe a l oeil' si on veut, le truc que l'user voit, mais bon, je pense qu'une appli ne se résume pas a la position des boutons et aux couleurs ... enfin, ca reste que le fond de ma penser.

    y a apparemment une marge enorme d'utilisation et de création en java, ... autant "rentrer dans le tas"

  17. #17
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 113
    Par défaut
    savoir manipuler les differents layout n'est pas une perte de temps.

    la base dans le domaine (selon moi) c'est savoir manipuler :

    Layout :
    BorderLayout
    GridLayout
    FlowLayout

    Tout ce qui est :
    setPreferredSize()
    setMaximumSize()
    setMinimumSize()
    setBounds()
    setSize()
    setPosition()

    et les border :
    titledborder
    lineborder
    ...

    car on ne peut pas toujours tout faire en visuel. (par exemple pour des panneaux dynamiques).

    c'est ch... je te l'accorde, mais tu t'en servira tres regulierement.

  18. #18
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    +1, c'est une fois que l'on est capable de comprendre le code de base que l'on peut s'en passer. Ce n'est pas une généralité (prenons l'exmple assembleur/C ) mais ça aide énormément...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/02/2008, 18h05
  2. Réponses: 10
    Dernier message: 01/09/2007, 17h12
  3. [reseau de neurones]cb de neurones sur les couches ?
    Par oniric dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 27/05/2007, 11h08
  4. Bibliothèque implémentant les couches basses tcp/ip-html
    Par cheprod dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 16/03/2007, 19h05
  5. echange entre les couches
    Par manoushka dans le forum Hardware
    Réponses: 2
    Dernier message: 31/05/2006, 09h45

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