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 :

[SWING] 2 layout imbriqués


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut [SWING] 2 layout imbriqués
    Bonjour,
    j'ai un JPanel JPA qui contient un JPanel JPB ...
    Dans JPA : une bufferedImage et JPB
    Dans JPB : 4 JLabel + 4JButton

    ce code la marche :
    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
     
    public class JPA extends JPanel {
        InternalImage monImage;
        public JPA() {
            monImage = new InternalImage(....);
            monJPB = new JPB();
            this.add(monJPB);
       }
    }
    public class JPB extends JPanel {
        public JPB() {
             this.setLayout(new GridLayout(4, 2));
            JLabel L1 = new JLabel("fgfdg");
            JLabel L2 = new JLabel("ezrezezr");
            JLabel L3 = new JLabel("fdfdfdf");
            JLabel L4 = new JLabel("ezrzerzer");
     
            this.add(L1);
            B1 = new JButton();
            this.add(B1);
     
            this.add(L2);
            B2 = new JButton();
            this.add(B2);
     
            this.add(L3);
            B3 = new JButton();
            this.add(B3);
     
            this.add(L4);
            B4 = new JButton();
            this.add(B4);
    Je veux maitenant ajouter dans JPA une 3ème colonne pour afficher un bouton supplémentaire.
    Je modifie donc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     public class JPA extends JPanel {
        InternalImage monImage;
        public JPA() {
            this.setLayout(new GridLayout(1, 3));
            monImage = new InternalImage(....);
            monJPB = new JPB();
            this.add(monJPB);
            this.add(new JButton("zzzzzzzz"));*/
       }
    }
    Et la, ben c'est n'importe quoi .... le panel JPB ne s'affiche plus du tout comme avant ...

    Au secours, je ne comprends pas !

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, je crois que ça vient du GridLayout, il est fait pour avoir des cases de tailles identiques. Essait plutôt un BorderLayout en mettant JPB au centre.

    Au passage je crois que tu as oublié d'ajouter ton image à JPB.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut
    merci de cette réponse.
    2 pts supplémentaires :
    mon image n'est pas ajoutée, elle est dessinée par le paint de JPA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void paint(Graphics g) {
            monImage.calculPositionImage(this.getSize().getWidth(),this.getSize().getHeight()); 
            g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            super.paint(g);
            monImage.drawImage(g2d);
    le drawimage de mon image étant comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    protected void drawImage(Graphics2D g2d) {
         g2d.drawImage(image, affineTransform, null);
    }
    2ème point : si je mets un BorderLayout, j'ai les mêmes symptomes : les JLabel sont en vrac et mes boutons doublent ou triplent de largeur

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut
    Bon en fait, c'est un peu naze mais si certains peuvent trouver mieux, j'ai une piste ....
    En fait si j'ajoute un JLabel "factice" dans JPA comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     public class JPA extends JPanel {
        InternalImage monImage;
        public JPA() {
            monImage = new InternalImage(....);
            this.setLayout(new GridLayout(1, 3));
            this.add(new JLabel(""));
            monJPB = new JPB();
            this.add(monJPB);
            this.add(new JButton("zzzzzzzz"));*/
       }
    }
    ben la ca marche : j'ai l'impression que mon image est dessinée indépendament du gridLayout et donc mon JLabel factice lui réserve un espace dans le JPanel ce qui permet aux autres cases du gridLayout de se dessiner normalement .... mais c'est très moche comme code !

  5. #5
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Par défaut
    pour ton problème c'est tout a fait normal.

    le souci proviens du fait que tu définis un gridLayout(1,3)

    hors dans ce layout tu n'ajoute que deux éléments.

    c'est pourquoi lorsque tu ajoute un Jlabel vide cela fonctionne.

    il te suffit juste de définir gridLayout(1,2) au lieu de gridLayout(1,3)

Discussions similaires

  1. Swing layout...???!!!!
    Par menuge dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 10/05/2006, 15h25
  2. [AWT/Swing] BorderLayout --> [SWT] ???Layout
    Par ®om dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 08/05/2006, 19h19
  3. Réponses: 5
    Dernier message: 11/04/2006, 16h39
  4. [swing] Layouts !!
    Par sse dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 08/12/2005, 20h45
  5. [SWING][Layout]Window simple cadre
    Par phil_ma dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 21/06/2005, 14h59

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