Programación

Gestores de ditribución (layouts) en java

Si te gusta, compártelo 🙂Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

Gestores de ditribución (layouts) en java

Para organizar los componentes de una interfaz de usuario, debemos utilizar un conjunto de clases llamadas gestores de distribución.
Los gestores ayudan a adaptar los componentes que se desean incorporar a un contenedor.
A continuación echaremos un vistazo a los principales gestores de distribución los veremos a continuación.

BorderLayout

Es el gestor de distribución por defecto del objeto contentPane para los marcos y ventanas. NO CONFUNDIR CON LOS PANELES JPanel

Divide un contenedor en cinco secciones: norte, sur, este, oeste y centro. Cada región solo puede contener un componente y es identificada por la constante correspondiente:
NORTH, SOUTH, EAST, WEST, CENTER.

Si el constructor no lleva argumentos, no existen huecos entre los componentes. Si lleva argumentos, éstos se corresponderían con los huecos horizontales y verticales respectivamente.

Los componentes se añaden mediante el método add que tiene como primer argumento el componente a añadir y como segundo la constante que indica a qué parte asignar los componentes.

BorderLayout

FlowLayout

Dispone los componentes en filas de izquierda a derecha, de forma similar a las líneas de texto en un párrafo. ES EL GESTOR DE DITRIBUCIÓN POR DEFECTO DE LA CLASE JPanel.
Por defecto, los componentes de cada fila se centrarán cuando se use el constructor FlowLayout() sin argumentos. Puede indicarse la alineación por medio del constructor mediante las variables de clase:

    • FlowLayout.LEFT
    • FlowLayout.RIGHT
    • FlowLayout.CENTER

También se puede cambiar mediante un constructor el espacio vertical y horizontal entre componentes (5px por defecto).

Muy útil para realizar un menú.

Veamos dos ejemplos partiendo del código visto con anterioridad. El primer caso no utilizaremos JPanel por lo tendremos que cambiar el layout por defecto de contentPane.

FlowLayout

La otra opción sería meter un panel (JPanel) que por defecto ya presenta y layout de tipo FlowLayout.

FlowLayout con Jpanel

BoxLayout

Para los componentes que van a los lados necesitamos algo similar al FlowLayout, pero que lo haga en vertical.

El BoxLayout es algo más elaborado que el FlowLayout en el sentido de que permite tanto orientación horizontal como vertical. Sin embargo, aunque también se puede hacer, no es tan evidente el hacer que los componentes se peguen arriba, abajo, a la izquierda o a la derecha.

El código para nuestra barra de botones vertical en el lado izquierdo quedaría así.

BoxLayout

El constructor del BoxLayout es más complejo que el del FlowLayout. Debemos pasarle el contenedor al que lo estamos añadiendo, es decir, el parámetro panel (en el ejemplo). También debemos pasarle si queremos orientación vertical BoxLayout.Y_AXIX u orientación horizontal BoxLayout.X_AXIS.

 

GridLayout

Ordena componentes en una cuadrícula de filas y columnas.

Si el constructor no recibe ningún argumento, se utiliza una columna por componente, en una sola fila.

Si el constructor recibe dos argumentos, el primero indicará el número de filas y el segundo el de columnas.

Existe la posibilidad de utilizar otro constructor en el que además de filas y columnas se indica la separación entre ellas.

GridLayout

Posicionamiento absoluto

Cuando se colocan los componentes en contenedores utilizando los controladores de posicionamiento, se compensarán automáticamente las diferencias que se puedan encontrar entre resoluciones de pantalla de distintas plataformas.

Los componentes también se pueden colocar utilizando posicionamiento absoluto, es decir, indicando la posición y el tamaño de un componente en coordenadas absolutas indicadas en pixeles.

En este caso, es más difícil conseguir que la apariencia de la interfaz de usuario sea uniforme en cualquier plataforma.

El posicionamiento absoluto se realiza con el método setBounds de la clase Component, el cual tiene los siguientes constructores:

 

 

    • setBounds(int x, int y, int width, int height), siendo x e y las coordenadas con respecto a la parte superior izquierda del contenedor.
    • setBounds(Rectangle r)

 

También se puede realizar el posicionamiento con setLocation (int x, int y). En este caso, puede ser necesario utilizar setSize (int ancho,int alto) para fijar el tamaño.

 

En cualquier caso, será necesario utilizar setLayout(null) para eliminar el gestor de distribución por defecto.

Posicionamiento absoluto

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.