Estoy intentando crear una ventana muy simple utilizando Java Layouts. Tengo tres elementos para organizar: un botón, una barra de progreso y una etiqueta. El botón debe estar centrado verticalmente, la barra de progreso debe ocupar todo el ancho y la etiqueta debe quedar alineada.Ayúdeme a comprender los problemas de alineación de BoxLayout
Aquí hay algo de código (acaba de asumir panel es el panel de contenido de un JFrame, y el botón, progressBar y la etiqueta de haber sido creado antes):
BoxLayout layout = new BoxLayout(pane, BoxLayout.Y_AXIS);
pane.setLayout(layout);
button.setAlignmentX(Component.CENTER_ALIGNMENT);
pane.add(button);
progressBar.setAlignmentX(Component.CENTER_ALIGNMENT);
pane.add(progressBar);
label.setAlignmentX(Component.LEFT_ALIGNMENT);
pane.add(label);
Cuando la prueba de la aplicación lo veo todo mal alineada y la pata : el botón y la etiqueta están indentados aleatoriamente, y si cambio el tamaño de la ventana, la cantidad de sangría cambia de forma extraña. La barra de progreso se ve bien (ancho completo).
Simplemente no entiendo lo que está pasando. ¿Puedes darme una pista?
Personalmente, nunca confiar en setAlignmentX o setAlignmentY y tratar de evitarlos como la peste, también evito controladores de distribución que dependen exclusivamente de ellos. – jfpoilpret
ahora entiendo por qué lo hace. ¿Qué alternativas sugerirías? – gd1
Bueno, si tienes que apegarte a JDK puro, entonces probablemente usaría GridBagLayout en tu caso; eso funcionaría bien porque tu el diseño es simple (GBL comienza a ser complejo cuando su diseño tiene más componentes). De lo contrario, usaría DesignGridLayout. – jfpoilpret