GridBagLayout : Bouton masqué.
Bonjour,
J'ai crée un JPanel qui utilise un GridBagLayout.
J'ajoute mes différents composants dans ce panel mais un JButton n'apparait pas.
Voici mon code :
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 56 57 58 59 60 61 62 63 64 65 66
|
public TemplatePane(RepportsTemplateBean template) {
this.template = template;
// Building components
header = new HeaderPanel("Edition d'un template");
lblFile = new JLabel("l_File");
fldFile = new JTextField();
btnFile = new JButton("b_Select");
lblDataSources = new JLabel("l_Datasources");
tblDataSources = new JTable();
lblOptions = new JLabel("l_Options");
tblOptions = new JTable();
lblName = new JLabel("l_name");
fldName = new JTextField();
lblDescription = new JLabel("l_Description");
txtDescription = new JTextArea();
lblDocuments = new JLabel("l_Documents");
lstDocuments = new JList();
lblSubReports = new JLabel("l_Subreports");
lstSubreports = new JList();
// Adding components to layout
layout = new GridBagLayout();
GridBagConstraints cons = new GridBagConstraints();
setLayout(layout);
// Heading
cons.fill = GridBagConstraints.HORIZONTAL;
cons.weightx = 3.0;
cons.gridwidth = GridBagConstraints.REMAINDER;
add(header, cons);
// File selection
cons.gridwidth = GridBagConstraints.RELATIVE;
cons.fill = GridBagConstraints.HORIZONTAL;
cons.anchor = GridBagConstraints.LINE_END;
cons.weightx = 0.0;
add(lblFile, cons);
cons.anchor = GridBagConstraints.CENTER;
cons.weightx = 1.0;
add(fldFile, cons);
cons.weightx = 0.0;
cons.fill = GridBagConstraints.NONE;
cons.gridwidth = GridBagConstraints.REMAINDER;
add(btnFile, cons);
setLayout(layout);
}
private void add(JComponent comp, GridBagConstraints cons) {
layout.setConstraints(comp, cons);
super.add(comp);
} |
Mon problème est que mon 'btnFile' ne se montre pas.. J'ai bien mon 'header' sur une première ligne ensuite 'lblFile' et 'fldFile' mais 'btnFile' n'est pas la...
http://users.skynet.be/am254166/public/gridbag0.png
Je n'ai jamais utilisé GridBagLayout autrement qu'avec un GUIBuilder mais cette fois je ne peux pas et dans le fond c'est une bonne chose puisque je suis bloqué sur ce petit truc.
Merci
Edit 1 : Il semble que le problème vienne de la ligne cons.gridwidth=GridBagConstraints.RELATIVE. Si je commente les lignes relatives au 'header' et celle-ci dessus, tout se passe bien...
Mais pourquoi est-ce que je ne peux pas remettre en RELATIVE après un REMAINDER ?
Edit 2 : Si je réinstancie un 'GridBagConstraints' après la code relatif au 'header' et que je supprimer la ligne qui met le gridwidth a RELATIVE. Tout fonctionne bien.
C'est donc vraiment le fait de mettre le gridwidth en REMAINDER et ensuite en RELATIVE qui pose problème. Mais je ne sais toujours pas pourquoi..