Usted querrá jugar con layout managers para controlar la posición y el tamaño de los controles en su JPanel
. Los gerentes de diseño son responsables de colocar los controles, determinar a dónde van, qué tan grandes son, cuánto espacio hay entre ellos, qué sucede cuando cambia el tamaño de la ventana, etc.
Hay montones de diferentes administradores de diseño, cada uno de los cuales permite a los controles de diseño de diferentes maneras. El administrador de diseño predeterminado es FlowLayout
, que como has visto simplemente coloca los componentes uno al lado del otro, de izquierda a derecha. Eso es lo más simple. Algunos otros gestores de diseño común son:
GridLayout
- ordena los componentes en una rejilla rectangular con filas y columnas
BorderLayout
de igual tamaño - tiene un componente principal en el centro y hasta cuatro componentes circundantes arriba, abajo, a la izquierda y a la derecha.
GridBagLayout
- Big Bertha de todos los administradores de disposición integrados, es el más flexible pero también el más complicado de usar.
Podría, por ejemplo, usar un BoxLayout para diseñar las etiquetas.
BoxLayout
o bien apila sus componentes uno sobre el otro o los coloca en una fila - a su elección. Puede pensar que es una versión de FlowLayout
, pero con una mayor funcionalidad. Aquí es una imagen de una aplicación que pueda utilizar BoxLayout
para mostrar una columna de centrado de los componentes:
BoxLayout screenshot http://java.sun.com/docs/books/tutorial/figures/uiswing/layout/BoxLayoutDemo.png
Un ejemplo de código usando BoxLayout
sería:
JPanel pMeasure = new JPanel();
....
JLabel economy = new JLabel("Economy");
JLabel regularity = new JLabel("Regularity");
pMeasure.setLayout(new BoxLayout(pMeasure, BoxLayout.Y_AXIS));
pMeasure.add(economy);
pMeasure.add(regularity);
...
Posible duplicado de [agregar controles verticalmente en lugar de horizontalmente usando el diseño de flujo] (http://stackoverflow.com/questions/13510641/add-controls-vertically-instead-of-horizontally-using-flow-layout) – Abhijeet