2010-04-01 75 views
24

utilizo outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS)); y luego agrego elementos (por ejemplo JLabels, JButtons) a la outputPanel. Por ejemplo: outputPanel.add(submitButton);.¿Cómo centrar elementos en BoxLayout usando el centro del elemento?

veo que todos los elementos añadidos están "centrados". Es bueno, porque quiero que mis elementos estén en el centro. Cuando escribo "centro" me refiero a "igual distancia desde la izquierda y la derecha". Pero el problema es que la parte izquierda del elemento se coloca en el centro. Y quiero tener el centro de elementos para poner en el centro. ¿Cómo puedo obtener este comportamiento?

+0

Tuve un problema similar y descubrí que, en lugar de usar 'BoxLayout',' FlowLayout' funcionaba mejor y era más fácil centrar los objetos dentro de él. – JFreeman

Respuesta

40

El problema se puede resolver usando myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);. Funciona con JLabel, JButton y JRadioButton.

+1

Lo intenté y noté que todos los artículos tenían que haber aplicado setAlignmentX (Component.CENTER_ALIGNMENT) al mismo valor de CENTER_ALIGNMENT. Aplicarlo solo a un JButton no ayudó. También setHorizontalAlignment (SwingConstants.CENTER) no ayudó en absoluto. Espero que esto sea de ayuda para ti. –

0

Hasta ahora el mejor método que he encontrado que funciona con todos los tipo de componente:
1. Crear un nuevo JPanel:

JPanel helperPanel = new JPanel();

2. Añadir el componente (en este submitButton ejemplo) que desea centrar horizontalmente hacia la JPanel:
helperPanel.add(submitButton);

3. Añadir el panel a su panel original (el de BoxLayout): outerPanel.add(helperPanel);

Eso es todo! También podría establecer tamaño máximo en el helperPanel si no desea que el BoxLayout del outerPanel lo expanda.
Si se pregunta por qué funciona esto: el administrador de diseño implícito de un JPanel es FlowLayout, que centra sus elementos automáticamente.

Cuestiones relacionadas