J'essaie d'utiliser GridBagLayout
pour positionner des étiquettes sur deux rangées, mais je veux que certaines étiquettes couvrent les deux rangées et que d'autres soient placées les unes sur les autres. Je dois utiliser GridBagLayout
en raison de la fonctionnalité de dimensionnement proportionnelle dans les propriétés weightx
et weighty
de GridBagConstraints
. Ceci est la mise en page Je cherche:Comment positionner des étiquettes de hauteurs variables sur deux lignes en utilisant GridBagLayout?
+----------+----------+----------+----------+ | | | labelC | | | labelA | labelB |----------| labelD | | | | labelE | | +----------+----------+----------+----------+
Le problème est que labelE
est placé sous LabelA
. Voici la partie mise en page de mon code:
GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); this.setLayout(gridBag); c.fill = GridBagConstraints.BOTH; c.gridwidth = 1; c.gridheight = 2; c.weighty = PANEL_HEIGHT; gridbag.setConstraints(labelA, c); this.add(labelA); gridbag.setConstraints(labelB, c); this.add(labelB); c.gridheight = 1; c.weighty = TOPROW_HEIGHT; gridbag.setConstraints(labelC, c); this.add(labelC); c.gridheight = 2; c.gridwidth = GridBagConstraints.REMAINDER; c.weighty = PANEL_HEIGHT; gridbag.setConstraints(labelD, c); this.add(labelD); c.gridheight = 1; c.gridwidth = 1; c.weighty = BOTROW_HEIGHT; gridbag.setConstraints(labelE, c); this.add(labelE); this.validate();
Des idées sur ce qui me manque?
Bizarrement, 'gridx' et' gridy' ne sont pas utilisés dans l'exemple de code javadoc 'GridBagLayout', bien qu'il ait ce comportement. Cependant, cela fonctionne parfaitement. Merci, Colin! –
Ne pas besoin de 'this.pack()', cependant. –
@Erick Robertson, Vous avez raison, c'est juste un reste de mes tentatives de modification. Vous pouvez trouver quelques exemples de GridBagLayout sur les didacticiels Java: http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html –