Yo uso outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS)); y luego añadir elementos (por ejemplo JLabels, JButtons) a la outputPanel. Por ejemplo: outputPanel.add(submitButton);.

Veo que todos los elementos están «centrados». Es bueno, porque yo quiero que mis elementos para estar en el centro. Cuando escribo «centro» que significa «igual distancia de la izquierda y la derecha». Pero el problema es que la parte izquierda del elemento que se pone en el centro. Y quiero tener el centro de los elementos a poner en el centro. ¿Cómo puedo obtener este comportamiento?

  • He tenido un problema similar y se encontró que en lugar de utilizar BoxLayout , FlowLayout funcionado mejor y era más fácil al centro de la alineación de los objetos dentro de ella.
InformationsquelleAutor Roman | 2010-04-01

2 Comentarios

  1. 45

    El problema puede ser resuelto mediante el uso de myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);. Funciona con JLabel, JButton y JRadioButton.

    • He intentado eso y se dio cuenta que todos los artículos han aplicado setAlignmentX(Componente.CENTER_ALIGNMENT) para el mismo valor de CENTER_ALIGNMENT. Aplicar sólo a un JButton no ayuda. También setHorizontalAlignment(SwingConstants.CENTRO) no ayuda en absoluto. Espero que esto sea de ayuda para usted.
  2. 0

    Hasta ahora el mejor método que he encontrado que funciona con cada tipo de componente:

    1. Crear un nuevo JPanel:

    JPanel helperPanel = new JPanel();

    2. Agregar el componente (en este ejemplo submitButton) que desea centrar horizontalmente a la JPanel :


    helperPanel.add(submitButton);

    3. Agregar el panel a su panel original (el uno con el BoxLayout):
    outerPanel.add(helperPanel);

    Eso es todo!
    También se podría establecer un tamaño máximo en el helperPanel si usted no desea que el BoxLayout de la outerPanel para expandirla.

    Si usted se está preguntando por qué funciona: el implícito gestor de diseño de un JPanel es FlowLayout, que centra sus elementos de forma automática.

Dejar respuesta

Please enter your comment!
Please enter your name here