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 :

Problème avec GridBagLayout dans JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 29
    Points : 15
    Points
    15
    Par défaut Problème avec GridBagLayout dans JPanel
    Bonjour,

    je sais que cette question a été abordée plusieurs fois dans le forum. J'ai d'ailleurs parcouru bon nombre de topic et essayé plein de solutions mais j'ai toujours le même probleme.

    J'ai un JPanel dans lequel je dois mettre en gros 5 lignes composées d'autres éléments (JLabel et JSlider). J'arrive bien à tout mettre comme il faut et l'alignement vertical est nickel. Par contre, la premiere ligne commence aux 2/3 de la hauteur du JPanel et donc forcément la derniere ligne n'est pas affichée complètement. Ce que je voudrais c'est pouvoir mettre cette premiere ligne tout en haut à gauche (à son emplacement logique).

    J'ai essayé plein de méthodes avec les weightx, weighty, gridx... mais ya rien qui marche (faut dire que j'ai pas tout saisi le fonctionnement du GridBagLayout).

    Voici le code pour le placement d'une "ligne" (c'est la meme chose pour les autres lignes) :
    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
     
    JLabel lSupMin = new JLabel("Support");
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 1;
    gbl.setConstraints(lSupMin, gbc);
    slidersPanel.add(lSupMin);
    lSupMin = new JLabel("Valeur minimale");
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbl.setConstraints(lSupMin, gbc);
    slidersPanel.add(lSupMin);
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbl.setConstraints(sliderSupportMin, gbc);
    slidersPanel.add(sliderSupportMin);
    JLabel lSupMax = new JLabel("Valeur maximale");
    gbc.gridx = 3;
    gbc.gridy = 0;
    gbl.setConstraints(lSupMax, gbc);
    slidersPanel.add(lSupMax);
    gbc.gridx = 4;
    gbc.gridy = 0;
    gbc.gridwidth = GridBagConstraints.REMAINDER;
    gbl.setConstraints(sliderSupportMax, gbc);
    slidersPanel.add(sliderSupportMax);
    Si une ame charitable pouvait m'aider, ça me soulagerait grandement.
    Merci

  2. #2
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    je pense que weighty = 1 serait le bienvenu pour le placement vertical. sinon peut-être que c'est la fentetre qui n'est pas compactée -> Window.pack()

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    J'ai bien essayé tes 2 propositions broumbroum mais j'ai toujours le même problème.
    - en mettant weighty=1 à toutes les lignes, l'interligne est trop grand et la derniere ligne n'est plus dans la fenetre. Si je le met uniquement à la derniere ligne (méthode que j'ai lue sur le forum) les 4 premieres lignes sont bien à leur place "logique" en haut du panel mais la derniere ligne est tout en bas avec en gros espace entre les 2 dernieres lignes.
    - en utilisant la méthode pack(), la fenetre disparait et il ne me reste plus que mon menu. Donc soit je le fais mal, soit je le fais au mauvais endroit.

  4. #4
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    pack() ce serait apres chaque nouvel ajout de composants dans la fenetre. ou à la fin avant de mettre setvisible()
    normalement tu n'as pas besoin de tous ces parametres. personnellement je n'utilise que les contraintes gridwidth = REMAINDER pour une fin de ligne et fill HORIZONTAL ou BOTH pour remplir. occasionnellement gridweight pour ajuster.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Après un peu de nettoyage de paramètres et beaucoup de bidouilles, j'arrive à peu près à ce que je veux. Je me contenterais de ça pour l'instant.
    Merci pour tes conseils broumbroum

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

Discussions similaires

  1. Problème avec image dans JPanel
    Par littleshrimp dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 14/05/2006, 14h05
  2. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50
  3. Problème avec Between dans un code
    Par Sendo dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 18h44
  4. problème avec graphique dans état access
    Par petitmic dans le forum Access
    Réponses: 5
    Dernier message: 07/09/2005, 14h55
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

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