SlideShare una empresa de Scribd logo
Los layout managers o manejadores de composición, en traducción literal, ayudan a adaptar los diversos
Componentes que se desean incorporar a un Panel, es decir, especifican la apariencia que tendrán los
Componentes a la hora de colocarlos sobre un Contenedor, controlando tamaño y posición (layout)
automáticamente. Java dispone de varios, en la actual versión, tal como se muestra en la imagen:




¿Por qué Java proporciona estos esquemas predefinidos de disposición de componentes? La razón es
simple: imaginemos que se desean agrupar objetos de distinto tamaño en celdas de una rejilla virtual: si
confiados en nuestro conocimiento de un sistema gráfico determinado, se codificase a mano tal
disposición, se debería preveer el redimensionamiento del applet, su repintado cuando sea cubierto por
otra ventana, etc., además de todas las cuestiones relacionadas con un posible cambio de plataforma (uno
nunca sabe a donde van a ir a parar los propios hijos, o los applets).

Sigamos imaginando, ahora, que un hábil equipo de desarrollo ha previsto las disposiciones gráficas más
usadas y ha creado un gestor para cada una de tales configuraciones, que se ocupará, de forma
transparente para nosotros, de todas esas cuitas de formatos. Bien, pues estos gestores son instancias de
las distintas clases derivadas de LayoutManager y que se utilizan en el applet que genera la figura
siguiente, donde se muestran los diferentes tipos de layouts que proporciona el AWT.
FlowLayout

Es el más simple y el que se utiliza por defecto en todos los Paneles si no se fuerza el uso de alguno de los
otros. Los Componentes añadidos a un Panel con FlowLayout se encadenan en forma de lista. La cadena
es horizontal, de izquierda a derecha, y se puede seleccionar el espaciado entre cada Componente.

Si el Contenedor se cambia de tamaño en tiempo de ejecución, las posiciones de los Componentes se
ajustarán automáticamente, para colocar el máximo número posible de Componentes en la primera línea.

Los Componentes se alinean según se indique en el constructor. Si no se indica nada, se considera que los
Componentes que pueden estar en una misma línea estarán centrados, pero también se puede indicar que
se alineen a izquierda o derecha en el Contenedor.




Codigo Ejemplo
Instancia un objeto FlowLayout object alieado al Centro
// y con una separacion de 3 pixels en horizonal y vertical

FlowLayout miFlowLayout = new FlowLayout( FlowLayout.CENTER,3,3 );

// Se fija este FlowLayout para que sea el controlador de
// posicionamiento de componentes para el objeto Frame

miFrame.setLayout( miFlowLayout );
BorderLayout

La composición BorderLayout (de borde) proporciona un esquema más complejo de colocación de los
Componentes en un panel. La composición utiliza cinco zonas para colocar los Componentes sobre ellas:
Norte, Sur, Este, Oeste y Centro. Es el layout o composición que se utilizan por defecto Frame y Dialog.

El Norte ocupa la parte superior del panel, el Este ocupa el lado derecho, Sur la zona inferior y Oeste el
lado izquierdo. Centro representa el resto que queda, una vez que se hayan rellenado las otras cuatro
partes. Así, este controlador de posicionamiento resuelve los problemas de cambio de plataforma de
ejecución de la aplicación, pero limita el número de Componentes que pueden ser colocados en
Contenedor a cinco; aunque, si se va a construir un interfaz gráfico complejo, algunos de estos cinco
Componentes pueden Contenedores, con lo cual el número de Componentes puede verse ampliado.

En los cuatro lados, los Componentes se colocan y redimensionan de acuerdo a sus tamaños preferidos y
a los valores de separación que se hayan fijado al Contenedor. El tamaño prefijado y el tamaño mínimo
son dos informaciones muy importantes en este caso, ya que un botón puede ser redimensionado a
proporciones cualesquiera; sin embargo, el diseñador puede fijar un tamaño preferido para la mejor
apariencia del botón. El controlador de posicionamiento puede utilizar este tamaño cuando no haya
indicaciones de separación en el Contenedor, o puede ignorarlo, dependiendo del esquema que utilice.
Ahora bien, si se coloca una etiqueta en el botón, se puede indicar un tamaño mínimo de ese botón para
que siempre sea visible, al menos, el rótulo del botón. En este caso, el controlador de posicionamiento
muestra un total respeto a este valor y garantiza que por lo menos ese espacio estará disponible para el
botón.




Codigo Ejemplo
Frame miFrame = new Frame( "Tutorial de Java, AWT" );
// Se instancia un objeto BorderLayout con una holgura en vertical y
// horizontal de 3 pixels

BorderLayout miBorderLayout = new BorderLayout( 3,3 );

// Se fija este BorderLayout para que sea el controlador de
// posicionamiento de componentes para el objeto Frame

miFrame.setLayout( miBorderLayout );
CardLayout

Este es el tipo de composición que se utiliza cuando se necesita una zona de la ventana que permita
colocar distintos Componentes en esa misma zona. Este layout suele ir asociado con botones de selección
(Choice), de tal modo que cada selección determina el panel (grupo de componentes) que se presentarán.




Codigo Ejemplo
panel1.setLayout( miGridLayout );
// Se instancia un objeto layout de tipo CardLayout para ser
      // utilizado con el Panel

CardLayout miCardLayout = new CardLayout();


     // Instancia el primero de los dos objetos Panel que sera
     // integrado en el objeto Frame
     Panel panel1 = new Panel();
     // Fijamos el layout que habiamos definido para el panel
     panel1.setLayout( miCardLayout );


Frame miFrame = new Frame( "Tutorial de Java, AWT" );
// IMPORTANTE: Se añaden los dos objetos Panel que se han
// preparado al objeto Frame para crear el interfaz definitivo
miFrame.add( panel1,"North" );
GridLayout
La composición GridLayout proporciona gran flexibilidad para situar Componentes. El controlador de
posicionamiento se crea con un determinado número de filas y columnas y los Componentes van dentro
de las celdas de la tabla así definida.

Si el Contenedor es alterado en su tamaño en tiempo de ejecución, el sistema intentará mantener el mismo
número de filas y columnas dentro de los márgenes de separación que se hayan indicado. En este caso,
estos márgenes tienen prioridad sobre el tamaño mínimo que se haya indicado para los Componentes, por
lo que puede llegar a conseguirse que sean de un tamaño tan pequeño que sus etiquetas sean ilegibles.




Codigo Ejemplo
panel1.setLayout( miGridLayout );
// Se instancia un objeto layout de tipo GridLayout para ser
      // utilizado con el Panel
      GridLayout miGridLayout = new GridLayout( 2,3 );

    // Instancia el primero de los dos objetos Panel que sera
    // integrado en el objeto Frame
    Panel panel1 = new Panel();
    // Fijamos el layout que habiamos definido para el panel
    panel1.setLayout( miGridLayout );


Frame miFrame = new Frame( "Tutorial de Java, AWT" );
// IMPORTANTE: Se añaden los dos objetos Panel que se han
// preparado al objeto Frame para crear el interfaz definitivo
miFrame.add( panel1,"North" );
GridBagLayout
Es igual que la composición de GridLayout, con la diferencia que los Componentes no necesitan tener el
mismo tamaño. Es quizá el controlador de posicionamiento más sofisticado de los que actualmente
soporta AWT.

A la hora de ponerse a trabajar con este controlador de posicionamiento, hay que tomar el rol de un
auténtico aventurero. Parece que la filosofía de la gente de JavaSoft es que todo debe hacerse en el
código. La verdad es que hasta que no haya en Java algo semejante a los recursos de X, el trabajo del
programador, si quiere prescindir de herramientas de diseño, es un tanto prehistórico en su forma de hacer
las cosas.




Si el lector acepta una recomendación, el consejo es que evite como la peste el uso del GridBagLayout,
porque tanta sofisticación lo único que acarrea son dolores de cabeza; y, siempre se puede recurrir a la
técnica de combinar varios paneles utilizando otros controladores de posicionamiento, dentro del mismo
programa. Loa applets no apreciarán esta diferencia, al menos no tanto como para justificar los problemas
que conlleva el uso del GridBagLayout

Más contenido relacionado

PDF
Layouts - Java
PDF
Programacion en JAVA 2
PPTX
Confección de interfaces de usuario con JAVA - SWING
DOCX
Concepto de layout
PDF
interfaz grafica
PPTX
Introducción a Swing
PPT
Programación III (Java) - 06 Ventanas
Layouts - Java
Programacion en JAVA 2
Confección de interfaces de usuario con JAVA - SWING
Concepto de layout
interfaz grafica
Introducción a Swing
Programación III (Java) - 06 Ventanas

La actualidad más candente (18)

PDF
Guis en java-1pp_2012_
PDF
Curso java 6
PDF
2012 interfaz grafica en guide matlab
PPTX
GUI EN MATLAB MODULACION PULSO UNICO
PPTX
Interfaz grafica matlab
PDF
Jfc java
PPTX
Gui interfaz gráfica de usuario javax.swing y java.awt
PDF
12swing gui
PDF
Guide
PDF
PPTX
Simulación clase04
PPTX
Java GUI La librería Swing
PDF
Lps 15 gu-iconswing
PPTX
Simulación Clase 3
PPT
AWT- JAVA
PPSX
Graficas matlab
PDF
Manual promodel
PDF
Jyoc java-cap18 swing y java fx
Guis en java-1pp_2012_
Curso java 6
2012 interfaz grafica en guide matlab
GUI EN MATLAB MODULACION PULSO UNICO
Interfaz grafica matlab
Jfc java
Gui interfaz gráfica de usuario javax.swing y java.awt
12swing gui
Guide
Simulación clase04
Java GUI La librería Swing
Lps 15 gu-iconswing
Simulación Clase 3
AWT- JAVA
Graficas matlab
Manual promodel
Jyoc java-cap18 swing y java fx
Publicidad

Similar a Layout (20)

PDF
Vbr Awt 01
PPTX
Swing intefaz grafica de usuario
PPT
Entorno grafico en Java
PPT
Entorno gráfico en Java
PPT
abstract window tool kit
DOCX
Introduccion de-aplicaciones-visuales
PDF
Gestores de diseño
PDF
Gestores de diseño
PDF
Gestores de diseño
DOCX
Ejemplo j internalframe_gine
PPT
Clase 5 JAVA 2012
PPTX
Interfaz gráfica de usuario y eventos (introducción)
PPTX
5. Gestores de Posicionamiento - Eventos.pptx
PDF
Tutorial java fx_8_espanol
DOCX
Trabajo teórico exposcición
DOC
Articulo programacion java (1)
PPTX
Programacion_II_04_disposicion_contenedores
PDF
"Android de la A a la Z" -- Unidad 10
DOCX
PDF
Java tema06a
Vbr Awt 01
Swing intefaz grafica de usuario
Entorno grafico en Java
Entorno gráfico en Java
abstract window tool kit
Introduccion de-aplicaciones-visuales
Gestores de diseño
Gestores de diseño
Gestores de diseño
Ejemplo j internalframe_gine
Clase 5 JAVA 2012
Interfaz gráfica de usuario y eventos (introducción)
5. Gestores de Posicionamiento - Eventos.pptx
Tutorial java fx_8_espanol
Trabajo teórico exposcición
Articulo programacion java (1)
Programacion_II_04_disposicion_contenedores
"Android de la A a la Z" -- Unidad 10
Java tema06a
Publicidad

Más de Boris Salleg (20)

DOCX
01. capitulo 2 6 validacion de datos
DOCX
03. prueba de conocimiento inicial excel basico terminada
PPTX
01. contenido curso internet basico
PPTX
Contenido curso excel basico
DOCX
Compromiso academico servicios de internet
DOCX
Compromiso academico excel basico
DOCX
Taller #1 institucion educativa las margaritas
PPT
Arboles
DOCX
Introduccion base de datos
DOCX
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
PPTX
Conexion bd en java y api necesaria
DOCX
Condicionales
DOCX
Algoritmo variables, constantes, tipos de datos y asignacion
DOCX
Algoritmos, programas, compiladores y lenguajes de programacion
DOCX
Algoritmo de listas simples completo
DOCX
Introduccion base de datos con MYSQL
DOCX
Practica utilizacion de beans en jsp
DOCX
Utilizacion de beans en jsp
DOCX
Practica eventos
DOCX
Clase event
01. capitulo 2 6 validacion de datos
03. prueba de conocimiento inicial excel basico terminada
01. contenido curso internet basico
Contenido curso excel basico
Compromiso academico servicios de internet
Compromiso academico excel basico
Taller #1 institucion educativa las margaritas
Arboles
Introduccion base de datos
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Conexion bd en java y api necesaria
Condicionales
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmo de listas simples completo
Introduccion base de datos con MYSQL
Practica utilizacion de beans en jsp
Utilizacion de beans en jsp
Practica eventos
Clase event

Último (20)

PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
DOCX
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Atencion prenatal. Ginecologia y obsetricia
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
DOCX
PLAN DE CASTELLANO 2021 actualizado a la normativa
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
TOMO II - LITERATURA.pd plusenmas ultras
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
Tomo 1 de biologia gratis ultra plusenmas
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Atencion prenatal. Ginecologia y obsetricia
V UNIDAD - PRIMER GRADO. del mes de agosto
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
Escuelas Desarmando una mirada subjetiva a la educación
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PLAN DE CASTELLANO 2021 actualizado a la normativa
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
TOMO II - LITERATURA.pd plusenmas ultras
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo

Layout

  • 1. Los layout managers o manejadores de composición, en traducción literal, ayudan a adaptar los diversos Componentes que se desean incorporar a un Panel, es decir, especifican la apariencia que tendrán los Componentes a la hora de colocarlos sobre un Contenedor, controlando tamaño y posición (layout) automáticamente. Java dispone de varios, en la actual versión, tal como se muestra en la imagen: ¿Por qué Java proporciona estos esquemas predefinidos de disposición de componentes? La razón es simple: imaginemos que se desean agrupar objetos de distinto tamaño en celdas de una rejilla virtual: si confiados en nuestro conocimiento de un sistema gráfico determinado, se codificase a mano tal disposición, se debería preveer el redimensionamiento del applet, su repintado cuando sea cubierto por otra ventana, etc., además de todas las cuestiones relacionadas con un posible cambio de plataforma (uno nunca sabe a donde van a ir a parar los propios hijos, o los applets). Sigamos imaginando, ahora, que un hábil equipo de desarrollo ha previsto las disposiciones gráficas más usadas y ha creado un gestor para cada una de tales configuraciones, que se ocupará, de forma transparente para nosotros, de todas esas cuitas de formatos. Bien, pues estos gestores son instancias de las distintas clases derivadas de LayoutManager y que se utilizan en el applet que genera la figura siguiente, donde se muestran los diferentes tipos de layouts que proporciona el AWT.
  • 2. FlowLayout Es el más simple y el que se utiliza por defecto en todos los Paneles si no se fuerza el uso de alguno de los otros. Los Componentes añadidos a un Panel con FlowLayout se encadenan en forma de lista. La cadena es horizontal, de izquierda a derecha, y se puede seleccionar el espaciado entre cada Componente. Si el Contenedor se cambia de tamaño en tiempo de ejecución, las posiciones de los Componentes se ajustarán automáticamente, para colocar el máximo número posible de Componentes en la primera línea. Los Componentes se alinean según se indique en el constructor. Si no se indica nada, se considera que los Componentes que pueden estar en una misma línea estarán centrados, pero también se puede indicar que se alineen a izquierda o derecha en el Contenedor. Codigo Ejemplo Instancia un objeto FlowLayout object alieado al Centro // y con una separacion de 3 pixels en horizonal y vertical FlowLayout miFlowLayout = new FlowLayout( FlowLayout.CENTER,3,3 ); // Se fija este FlowLayout para que sea el controlador de // posicionamiento de componentes para el objeto Frame miFrame.setLayout( miFlowLayout );
  • 3. BorderLayout La composición BorderLayout (de borde) proporciona un esquema más complejo de colocación de los Componentes en un panel. La composición utiliza cinco zonas para colocar los Componentes sobre ellas: Norte, Sur, Este, Oeste y Centro. Es el layout o composición que se utilizan por defecto Frame y Dialog. El Norte ocupa la parte superior del panel, el Este ocupa el lado derecho, Sur la zona inferior y Oeste el lado izquierdo. Centro representa el resto que queda, una vez que se hayan rellenado las otras cuatro partes. Así, este controlador de posicionamiento resuelve los problemas de cambio de plataforma de ejecución de la aplicación, pero limita el número de Componentes que pueden ser colocados en Contenedor a cinco; aunque, si se va a construir un interfaz gráfico complejo, algunos de estos cinco Componentes pueden Contenedores, con lo cual el número de Componentes puede verse ampliado. En los cuatro lados, los Componentes se colocan y redimensionan de acuerdo a sus tamaños preferidos y a los valores de separación que se hayan fijado al Contenedor. El tamaño prefijado y el tamaño mínimo son dos informaciones muy importantes en este caso, ya que un botón puede ser redimensionado a proporciones cualesquiera; sin embargo, el diseñador puede fijar un tamaño preferido para la mejor apariencia del botón. El controlador de posicionamiento puede utilizar este tamaño cuando no haya indicaciones de separación en el Contenedor, o puede ignorarlo, dependiendo del esquema que utilice. Ahora bien, si se coloca una etiqueta en el botón, se puede indicar un tamaño mínimo de ese botón para que siempre sea visible, al menos, el rótulo del botón. En este caso, el controlador de posicionamiento muestra un total respeto a este valor y garantiza que por lo menos ese espacio estará disponible para el botón. Codigo Ejemplo Frame miFrame = new Frame( "Tutorial de Java, AWT" ); // Se instancia un objeto BorderLayout con una holgura en vertical y // horizontal de 3 pixels BorderLayout miBorderLayout = new BorderLayout( 3,3 ); // Se fija este BorderLayout para que sea el controlador de // posicionamiento de componentes para el objeto Frame miFrame.setLayout( miBorderLayout );
  • 4. CardLayout Este es el tipo de composición que se utiliza cuando se necesita una zona de la ventana que permita colocar distintos Componentes en esa misma zona. Este layout suele ir asociado con botones de selección (Choice), de tal modo que cada selección determina el panel (grupo de componentes) que se presentarán. Codigo Ejemplo panel1.setLayout( miGridLayout ); // Se instancia un objeto layout de tipo CardLayout para ser // utilizado con el Panel CardLayout miCardLayout = new CardLayout(); // Instancia el primero de los dos objetos Panel que sera // integrado en el objeto Frame Panel panel1 = new Panel(); // Fijamos el layout que habiamos definido para el panel panel1.setLayout( miCardLayout ); Frame miFrame = new Frame( "Tutorial de Java, AWT" ); // IMPORTANTE: Se añaden los dos objetos Panel que se han // preparado al objeto Frame para crear el interfaz definitivo miFrame.add( panel1,"North" );
  • 5. GridLayout La composición GridLayout proporciona gran flexibilidad para situar Componentes. El controlador de posicionamiento se crea con un determinado número de filas y columnas y los Componentes van dentro de las celdas de la tabla así definida. Si el Contenedor es alterado en su tamaño en tiempo de ejecución, el sistema intentará mantener el mismo número de filas y columnas dentro de los márgenes de separación que se hayan indicado. En este caso, estos márgenes tienen prioridad sobre el tamaño mínimo que se haya indicado para los Componentes, por lo que puede llegar a conseguirse que sean de un tamaño tan pequeño que sus etiquetas sean ilegibles. Codigo Ejemplo panel1.setLayout( miGridLayout ); // Se instancia un objeto layout de tipo GridLayout para ser // utilizado con el Panel GridLayout miGridLayout = new GridLayout( 2,3 ); // Instancia el primero de los dos objetos Panel que sera // integrado en el objeto Frame Panel panel1 = new Panel(); // Fijamos el layout que habiamos definido para el panel panel1.setLayout( miGridLayout ); Frame miFrame = new Frame( "Tutorial de Java, AWT" ); // IMPORTANTE: Se añaden los dos objetos Panel que se han // preparado al objeto Frame para crear el interfaz definitivo miFrame.add( panel1,"North" );
  • 6. GridBagLayout Es igual que la composición de GridLayout, con la diferencia que los Componentes no necesitan tener el mismo tamaño. Es quizá el controlador de posicionamiento más sofisticado de los que actualmente soporta AWT. A la hora de ponerse a trabajar con este controlador de posicionamiento, hay que tomar el rol de un auténtico aventurero. Parece que la filosofía de la gente de JavaSoft es que todo debe hacerse en el código. La verdad es que hasta que no haya en Java algo semejante a los recursos de X, el trabajo del programador, si quiere prescindir de herramientas de diseño, es un tanto prehistórico en su forma de hacer las cosas. Si el lector acepta una recomendación, el consejo es que evite como la peste el uso del GridBagLayout, porque tanta sofisticación lo único que acarrea son dolores de cabeza; y, siempre se puede recurrir a la técnica de combinar varios paneles utilizando otros controladores de posicionamiento, dentro del mismo programa. Loa applets no apreciarán esta diferencia, al menos no tanto como para justificar los problemas que conlleva el uso del GridBagLayout