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

Interfaces Graphiques en Java Discussion :

Placement JLabel dans JPanel


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut Placement JLabel dans JPanel
    Bonjour,

    Voilà mon problème:

    J'ai une image de fond qui s'affiche bien au bon endroit de mon JPanel, puis par dessus 2 JLabel que j'ajoute à mon JPanel grâce à un GridBagLayout. Mais impossible de les placer en haut à droite de la page. Il se mettent en plein milieu:

    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
    public PanneauPrincipal() {
            super(new GridBagLayout());
     
            GridBagConstraints cMain = new GridBagConstraints();
     
            labelMenu = new JLabel();
            labelMenu.setIcon(new ImageIcon("images/menu.png"));
     
            bouton1 = new JButton("Grille 1");
            bouton1.setPreferredSize(new Dimension(75, 20));
            bouton1.setBackground(couleurTexte);
            bouton1.setForeground(couleurFond);
            bouton1.addActionListener(new ActionEntrerListener());
     
            // première colonne
            cMain.gridx = 0;
            // première ligne
            cMain.gridy = 0;
            // prend toute la place
            cMain.gridwidth = 2;
            // marge
            cMain.insets = new Insets(0, 0, 0, 0);
            cMain.anchor = GridBagConstraints.FIRST_LINE_START;
            add(labelMenu, cMain);    
     
            // première colonne
            cMain.gridx = 0;
            // deuxième ligne
            cMain.gridy = 1;
            // prend toute la place
            cMain.gridwidth = 2;
            // marge
            cMain.insets = new Insets(20, 50, 0, 0);
            add(bouton1, cMain);
    Merci

  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 : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu trouveras ton bonheur là dedans: http://bbclone.developpez.com/fr/jav...gridbaglayout/
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    J'ai bien lu ce que tu m'a envoyé, seulement l'exemple porte sur un seul élément.

    En rouge ce que j'ai rajouté:
    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
            cMain.gridx = 0;
            // première ligne
            cMain.gridy = 0;
            // prend toute la place
            cMain.gridwidth = 2;
            // marge
            cMain.insets = new Insets(0, 0, 0, 0);
            // signifie que l'on peut déplacer le JLabel dans le JPanel horizontalement
            cMain.weightx = 1;
            // signifie que l'on peut déplacer le JLabel dans le JPanel verticalement
            cMain.weighty = 1;
            // est déplacé au début de la première ligne (en haut à gauche)
            cMain.anchor = GridBagConstraints.FIRST_LINE_START;
            add(labelMenu, cMain);    
            
            // première colonne
            cMain.gridx = 0;
            // deuxième ligne
            cMain.gridy = 1;
            // prend toute la place
            cMain.gridwidth = 2;
            // marge
            cMain.insets = new Insets(0, 50, 0, 0);
            // signifie que l'on peut déplacer le JLabel dans le JPanel horizontalement
            cMain.weightx = 1;
            // signifie que l'on peut déplacer le JLabel dans le JPanel verticalement
            cMain.weighty = 1;
            // est déplacé au début de la première ligne (en haut à gauche)
            cMain.anchor = GridBagConstraints.FIRST_LINE_START;
            add(bouton1, cMain);
    labelMenu est bien positionné en haut a droite, mais bouton1 n'est pas juste en dessous comme souhaité, en haut a droite. Il se trouve au milieu à droite dans le JPanel.

  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 : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Utilises un fill HORIZONTAL au lieu de BOTH.
    Et un weighty à 0
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Merci de ton aide, cela fonctionne même si je dois avouer que je ne comprends pas trop comment le fait de mettre weighty à 0, mon premier JLabel puisse bouger verticalement car il passe du milieu de page en haut.

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

Discussions similaires

  1. Placement JComponent dans un JPanel
    Par Deign dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 10/05/2011, 00h05
  2. Création dynamique de JLabel dans JPanel
    Par nims dans le forum Débuter
    Réponses: 1
    Dernier message: 01/10/2010, 11h04
  3. JLabel dans un JPanel
    Par bastien dans le forum Composants
    Réponses: 3
    Dernier message: 06/05/2010, 16h30
  4. Probleme avec l'ajout d'un JLabel dans un JPanel
    Par Leoo31 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/03/2010, 16h21
  5. comment centrer un JLabel dans un JPanel ?
    Par med_anis_dk dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 26/05/2007, 20h59

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