vertical gridlayout fillers borderlayout java user-interface swing layout center

fillers - gridlayout en java



¿Cómo centrar elementos en el BoxLayout usando el centro del elemento? (2)

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

Yo uso outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS)); y luego agrego elementos (por ejemplo JLabels, JButtons) al outputPanel . Por ejemplo: outputPanel.add(submitButton); .

Veo que todos los elementos agregados 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?


Hasta ahora, el mejor método que he encontrado que funciona con todos los tipos de componentes:
1. Crea un nuevo JPanel :

JPanel helperPanel = new JPanel();

2. Agregue el componente (en este ejemplo submitButton ) que desea centrar horizontalmente al JPanel:
helperPanel.add(submitButton);

3. Agregue el panel a su panel original (el que tiene BoxLayout): outerPanel.add(helperPanel);

¡Eso es! También puede establecer un tamaño máximo en el helperPanel si no desea que el BoxLayout del outerPanel 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.