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 :



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



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) :



Voici la partie de code où je place mes composants :

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
		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 !