2010-04-01 22 views
24

Io uso outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS)); e quindi aggiungo elementi (ad esempio JLabels, JButtons) allo outputPanel. Ad esempio: outputPanel.add(submitButton);.Come centrare gli elementi nel BoxLayout usando il centro dell'elemento?

Vedo che tutti gli elementi aggiunti sono "centrati". È buono, perché voglio che i miei elementi siano al centro. Quando scrivo "center" intendo "uguale distanza da sinistra e destra". Ma il problema è che la parte sinistra dell'elemento è messa al centro. E voglio avere il centro degli elementi da mettere al centro. Come posso ottenere questo comportamento?

+0

Avevo un problema simile e ho scoperto che invece di usare 'BoxLayout',' FlowLayout' funzionava meglio ed era più facile centrare gli oggetti allineati al suo interno. – JFreeman

risposta

40

Il problema può essere risolto utilizzando myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);. Funziona con JLabel, JButton e JRadioButton.

+1

L'ho provato e ho notato che tutti gli elementi dovevano aver applicato setAlignmentX (Component.CENTER_ALIGNMENT) allo stesso valore di CENTER_ALIGNMENT. L'applicazione solo a un JButton non ha aiutato. Anche setHorizontalAlignment (SwingConstants.CENTER) non ha aiutato affatto. Spero che questo ti sia di aiuto. –

0

Finora il metodo migliore che ho incontrato che funziona con ogni tipo di componente:
1. Creare un nuovo JPanel:

JPanel helperPanel = new JPanel();

2. Aggiungere il componente (in questo esempio submitButton) si desidera centrare orizzontalmente il JPanel:
helperPanel.add(submitButton);

3. Aggiungere il pannello al vostro pannello originale (quello con BoxLayout): outerPanel.add(helperPanel);

Questo è tutto! È inoltre possibile impostare una dimensione massima su helperPanel se non si desidera che il BoxLayout di outerPanel lo espanda.
Se ti stai chiedendo perché funzioni: il gestore di layout implicito di JPanel è FlowLayout, che centra automaticamente i tuoi elementi.

Problemi correlati