Administradores de Esquemas 1 (FlowLayout y BorderLayout)

Para la creación de una interfaz gráfica es de vital importancia el orden que tengan dentro de la misma los diversos componentes, esto es, ordenar correctamente los botones, barras, campos de texto, etc...
para ello en java contamos con los Administradores de Esquemas que proporcionan diferentes maneras de ordenar los elementos. Dentro de estos existen algunos básicos y otros mas avanzados: Todos estos Layout implementan(ya veremos que es exactamente implementar) de la interfaz LayoutManager que les proporciona los atributos básicos para la administración de gráficos en pantalla. Para agregar un layout a una "ventana" debemos agregarlo a través del método setLayout( );  que es implementado en la clase Container. como ya supondrás, todas las clases que heredan de Container también poseen este método, como por ejemplo JFrame y JPanel.
La administración de esquemas supone un par de cosas que debemos recordar:

1- El administrador de esquema dispone de control -relativo- sobre el tamaño y orden de los componentes.
2- cada administrador cuenta con propiedades especificas. por eso es necesario tomar una buena decisión sobre cual ocuparemos, ya que a mas básico el administrador, menor control tendremos.

También podemos definir el argumento del método setLayout() como null. Con esto obtendremos control total sobre los elementos, especificando manualmente tanto su posición como su tamaño mediante métodos que comparten todos los componentes como por ejemplo setBounds() que recibe 4 argumentos, los primeros dos sobre la posición del componente, y los otros dos sobre el tamaño.

FlowLayout

FlowLayout nos permite agregar componentes que se irán posicionando a medida que se vayan agregando al panel o ventana, los componentes se crean con el tamaño necesario y se irán posicionando en la siguiente linea de la ventana.



 
(no se hablara sobre lineas que ya hemos explicado antes, como la creación de la ventana)

lineas 1-4 se realizan las importaciones respectivas, en este caso utilizaremos botones, para lo cual lo traemos a través de  de JButton (clase que pertenece al paquete javax.swing), también importamos un campo de texto mediante JTextField, el cual es utilizado para campos de datos específicos, como nombres, apellidos, contraseñas, etc... También se realiza la importación de FlowLayout que es el administrador de esquema que utilizaremos en esta ocasión.

8 - se crean dos botones, osea, objetos de la clase JButton.

9 - se crea un campo de texto.

11- se crea el constructor y en lineas posteriores se crea la ventana.

17- se realiza una llamada al método setLayout(new FlowLayout); con lo que establecemos FlowLayout administrador de esquemas de nuestra ventana. En esta ocasión estamos agregando los componentes directo al JFrame pero seria lo mismo si los estuviésemos posicionando en un JPanel (en cuyo caso deberíamos llamar al setLayout del panel y no de la ventana)

18-20 - olvidémonos de estas lineas por un momento.

23 y 28 - un método JButton que inicializa (crea) el primer botón. si te fijas he puesto un String como argumento en la creación del elemento, esto es porque el constructor de JButton lo permite. este String será el titulo mostrado en el botón. puedes revisar todas las opciones del constructor de JButton en la API de java.


34- al igual que con los otros métodos, se inicializa el JTextField y se le agrega un String para que lo muestre dentro del campo al crearse el componente, este texto puede cambiarse. JTextField tiene diversos métodos para manejar los String en su interior.

37 - método main.

ahora si.

18-20 se agregan los métodos, por ende los objetos (dos JButton y un JTextArea), recuerden que el método add() añade los componentes a la ventana y como estamos utilizando el FlowLayout estos se agregaran en el orden en que los pasemos a la ventana, en este caso, boton1, boton2 y campo, respectivamente.

el resultado es así:

*si no te aparece el JTextArea cambia el tamaño de la ventana, en vez de 100, pone 120.

Ahora prueba cambiando el orden en que agregas los componentes y ve los resultados.
*Mas adelante haremos que los botones generen acciones.

BORDERLAYOUT()

Este administrador de esquema, te deja posicionar un elemento entre 5 posiciones diferentes,CENTER, SOUTH, NORTH, WEST, EAST.  expandiendo el componente donde no encuentre otro. por ejemplo ponemos un botón con orientación CENTER, al no encontrar ningún otro componente el botón ocuparía toda la ventana.

para probar este administrador solo debemos modificar un poco del codigo anterior.


- A los import, solo agregamos un java.awt.BorderLayout();
- en el método setLayout() agregamos a BorderLayout(), esos dos argumentos que reciben, son medidas en pixeles de la separación en ancho y alto de los componentes, No es obligación que le demos valores.
en las siguientes lineas al añadir los componentes mediante el método add() especificamos en que parte de la ventana queremos que este nuestro objeto.

este seria el resultado:


Como puedes ver el boton del centro al no encontrar otros componentes a su izquiera y derecha, relleno todo el espacio.

ahora cambiemos los valores del contructor de BorderLayout y pongamos le (4, 40)


como vez a cambiado el margen vertical entre los componentes, si añades otros botones o campos (en posiciones WEST y EAST) puedes también modificar el margen horizontal y ver los resultados.