Comportement étrange du GridBagLayout
Bonsoir,
Je développe actuellement une petite application dans le cadre d'un projet pour les cours...
J'ai travaillé il y a quelques années avec JGoodies, un gestionnaire de placement très sympathique. Cependant, j'aimerais utilisé un gestionnaire intégré de base à Java, et c'est pourquoi je me suis tourné vers le GridBagLayout...
J'ai suivi le tutoriel présent ici qui, soit dit en passant, est vraiment génial. J'ai bien réussi à faire mon interface. J'ai juste un dernier comportement un peu étrange. Voici ma fenêtre à l'ouverture :
http://img4.imageshack.us/img4/4159/96395898.jpg
Comme vous pouvez le voir, mon textfield, en bas, ne reste pas dans ses clous...
Lorsque j'agrandis ma fenêtre, tous les composants prennent leur place correctement
http://img62.imageshack.us/img62/1536/62686599.jpg
Par contre, lorsque je rends ma fenêtre plus petite, elle n'est pas correctement mise à jour à tous les coups... Parfois ca passe, parfois ça donne ceci (ou autres) :
http://img863.imageshack.us/img863/9638/43289315.jpg
Voici la partie de code où je place mes composants :
Code:
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
| discussionTextArea = new JTextArea();
discussionTextArea.setLineWrap(true);
discussionScrollPane = new JScrollPane(discussionTextArea);
inputTextField = new JTextField();
sendButton = new JButton("Envoyer");
chatPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0; //Position (0,0)
gbc.gridwidth = GridBagConstraints.REMAINDER; //Dernier composant de la ligne
gbc.gridheight = 1; //Une case de haut
gbc.weightx = 1.;
gbc.weighty = 1.; //Extension sur tout l'espace
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.LINE_START; // Anchor à la base
gbc.insets = new Insets(Constants.MARGE, Constants.MARGE, Constants.MARGE, Constants.MARGE); //Définition des marges
chatPanel.add(discussionScrollPane, gbc);
gbc.gridy = 1;
gbc.gridx = 0;
gbc.weightx = 1.;
gbc.weighty = 0.;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.anchor = GridBagConstraints.BASELINE_LEADING;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(0, Constants.MARGE, Constants.MARGE, Constants.MARGE);
chatPanel.add(inputTextField, gbc);
gbc.gridy = 1;
gbc.gridx = 1;
gbc.weightx = 0.;
gbc.weighty = 0.;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.anchor = GridBagConstraints.BASELINE_LEADING;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets(0, 0, Constants.MARGE, Constants.MARGE);
chatPanel.add(sendButton, gbc); |
Est-ce que qqun aurait une idée ? Et j'ai vu que GridBagLayout était un peu dépassé... Que me conseillez-vous ?
Merci !