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] Problème avec les GridBagLayout


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 43
    Points
    43
    Par défaut [Swing] Problème avec les GridBagLayout
    Salut à tous,

    suite à de très nombreux problèmes de placements de composants, je tente de recoder mon interface en utilisant des GridBagLayout. Un bon point, ca marche dans l'ensemble. Le seul truc, c'est que tout les composants sont centrés en hauteur au milieu du panel ou ils sont. Le code est fourni ci dessous:

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
     
    // Création du la box contenant les options de recherche
            Box searchbox = Box.createVerticalBox();
             searchbox.setBorder(new TitledBorder("Criteres de recherche"));
             //setSize(searchbox, 240, 450);
             this.getContentPane().add(searchbox);
     
            // Barre d'onglets contenant 2 GridBagLayout => 1 container pour chaque onglet
            JTabbedPane bar = new JTabbedPane(); // Bar en elle meme
              searchbox.add(bar);
     
              // Besoin de deux panels pour les deux onglets
              JPanel optCrit = new JPanel();
              GridBagLayout GB_optCrit = new GridBagLayout();
               optCrit.setLayout(GB_optCrit);
     
              JPanel optAdv = new JPanel();
              GridBagLayout GB_optAdv = new GridBagLayout();
               optAdv.setLayout(GB_optAdv);
     
               // Ajoute les deux onglets
               bar.add("Critères", optCrit);
               bar.add("Options",  optAdv);
     
               // On arrive au coeur du probleme => Placement des composants
               GridBagConstraints GBC_1 = new GridBagConstraints();// Contrainte
               GBC_1.gridx = 0;
               GBC_1.gridy = 0;
               GBC_1.weightx = 0;
               GBC_1.weighty = 0;
               GBC_1.anchor = GridBagConstraints.NORTHWEST;
               GBC_1.insets = new Insets(0,5,5,0);
               optCrit.add(new JLabel("Nom du fichier :"), GBC_1);
     
     
               GridBagConstraints GBC_2 = new GridBagConstraints();// Contrainte
               GBC_2.gridx = 0;
               GBC_2.gridy = 1;
               GBC_2.weightx = 100;
               GBC_2.weighty = 0;           
               GBC_2.anchor = GridBagConstraints.NORTHWEST;
               GBC_2.fill = GridBagConstraints.HORIZONTAL;
               GBC_2.insets = new Insets(0,0,40,0);
               JTextField fileName = new JTextField(33);
               optCrit.add(fileName, GBC_2);           
     
     
               GridBagConstraints GBC_3 = new GridBagConstraints();// Contrainte
               GBC_3.gridx = 0;
               GBC_3.gridy = 5;
               GBC_3.weightx = 0;
               GBC_3.weighty = 0;
               GBC_3.anchor = GridBagConstraints.NORTHWEST;
               GBC_3.insets = new Insets(0,5,5,0);
               optCrit.add(new JLabel("Nom du fichier :"), GBC_3);
     
               GridBagConstraints GBC_4 = new GridBagConstraints();// Contrainte
               GBC_4.gridx = 0;
               GBC_4.gridy = 6;
               GBC_4.weightx = 100;
               GBC_4.weighty = 0;
               GBC_4.anchor = GridBagConstraints.NORTHWEST;
               GBC_4.fill = GridBagConstraints.HORIZONTAL;
               GBC_4.insets = new Insets(0,0,40,0);
               JTextField infileName = new JTextField(33);
               optCrit.add(infileName, GBC_4);    
     
     
               GridBagConstraints GBC_5 = new GridBagConstraints();// Contrainte
               GBC_5.gridx = 0;
               GBC_5.gridy = 9;
               GBC_5.weightx = 50;
               GBC_5.weighty = 0;
               GBC_5.fill = GridBagConstraints.HORIZONTAL;
               GBC_5.anchor = GridBagConstraints.NORTHWEST; 
               GBC_5.insets = new Insets(0,0,40,0);
     
               Box hRootsBox = Box.createHorizontalBox();
                hRootsBox.add(new JLabel("Source : "));
                JComboBox combo = new JComboBox(File.listRoots());
                hRootsBox.add(combo);
     
               optCrit.add(hRootsBox, GBC_5);


    Deuxième problème, à quoi correspond le paramètre weightx, weighty, parce qu'il ne semble pas avoir bcp d'influence sur les composants.

    Enfin, a mon avis mon troisième probleme est lié à ce dernier. Comment faire pour réduire un peu la taille d'un composant...



    Merci bcp!
    Images attachées Images attachées  

  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
    En fait tout se joue justement sur les valeurs de weightx et weight y qui donnent le poids du composant (enfin de la case le contenant dans le gridbaglayout). Ces valeurs sont d'ailleurs des doubles dont les valeurs significatives sont comprises entre 0 et 1
    Une façon tout simple de régler ton problème est de dire que composant déposé le plus bas est celui qui a la préférence lors du redimmensionnement (et donc va occuper tout la place "vide).
    Pour ceci il suffit de mettre le poids de don redimensionnement vertical à 1.0 et tous les autres poids à 0 (ce qui est actuellement le cas) donc mets ceci en llieu et place de ce que tu avais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    GridBagConstraints GBC_5 = new GridBagConstraints();// Contrainte
    GBC_5.gridx = 0;
    GBC_5.gridy = 9;
    GBC_5.weightx = 0;
    GBC_5.weighty = 1.0;
    GBC_5.fill = GridBagConstraints.HORIZONTAL;
    GBC_5.anchor = GridBagConstraints.NORTHWEST; 
    GBC_5.insets = new Insets(0,0,0,0);
    Mais bon je suis un peu rouillé sur le GridBagLayout depuis que j'ai découvert le FormLayout JGoodies qui est une petite merveille pour ce genre d'opérations
    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.

Discussions similaires

  1. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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