Sunteți pe pagina 1din 8

Una Gua Visual de Controladores de Distribucin

Varias clases de AWT y Swing proporcionan controladores de distribucin para uso general:

BorderLayout

BoxLayout

CardLayout

FlowLayout

GridBagLayout

GridLayout

GroupLayout

SpringLayout

En esta seccin se muestra un ejemplo de interfaces grficas de usuario que utilizan estos controladores de distribucin, y le dice dnde
encontrar el cmo-a la pgina para cada controlador de distribucin. Puede encontrar enlaces para ejecutar los ejemplos en el cmo-a
pginas y en el ndice de ejemplo .

Nota: Esta leccin cubre escribir cdigo de diseo a mano, que puede ser un reto. Si no est interesado en conocer todos los detalles
de la gestin de diseo, es posible que prefiera utilizar el

GroupLayoutgestor de diseo combinado con una herramienta de

desarrollo para disear su interfaz grfica de usuario. Una de estas herramientas es el constructor IDE NetBeans . De lo contrario, si
desea codificar a mano y no desea utilizar GroupLayout, a continuacin, GridBagLayoutse recomienda que el prximo
director de diseo ms flexible y potente.

Si usted est interesado en utilizar JavaFX para crear su interfaz grfica de usuario, vea Trabajar con formatos de JavaFX .

BorderLayout

Cada panel de contenido se inicializa para utilizar una

BorderLayout. (Como Uso de nivel superior Contenedores explica, el


BorderLayoutsita los

panel de contenido es el contenedor principal en todos los marcos, applets y cuadros de dilogo.) Un

componentes en un mximo de cinco reas: arriba, abajo, izquierda, derecha y centro. Todo el espacio adicional se coloca en el rea
central. Barras de herramientas que se crean mediante JToolBar deben crearse dentro de un

BorderLayoutcontenedor, si usted

quiere ser capaz de arrastrar y soltar las barras lejos de sus posiciones de partida. Para ms detalles, consulte Cmo usar
BorderLayout .

BoxLayout

La BoxLayoutclase pone componentes en una nica fila o columna. Respeta los componentes solicitaron mximos tamaos y
tambin le permite alinear los componentes. Para ms detalles, consulte Cmo usar BoxLayout .

CardLayout

La CardLayoutclase le permite implementar un rea que contiene diferentes componentes en diferentes


momentos. A CardLayoutmenudo se controla mediante un cuadro combinado, con el estado del cuadro combinado determinar
qu panel (grupo de componentes) lasCardLayoutpantallas. Una alternativa al uso

CardLayoutest utilizando un panel

con pestaas , lo que proporciona una funcionalidad similar pero con una interfaz grfica de usuario predefinido. Para ms detalles,
consulte Cmo utilizar CardLayout .

FlowLayout

FlowLayoutes el controlador de distribucin por defecto para cada JPanel. Simplemente expone componentes en una sola
fila, comenzando una nueva fila si su envase no es lo suficientemente amplia. Ambos paneles en CardLayoutDemo,
mostrado anteriormente , utilizan FlowLayout. Para ms detalles, consulte Cmo usar FlowLayout .

GridBagLayout

GridBagLayoutes un sofisticado, gestor de diseo flexible. Se alinea componentes colocndolos dentro de una cuadrcula de
las clulas, lo que permite a los componentes abarcan ms de una celda. Las filas de la cuadrcula pueden tener diferentes alturas, y
columnas de la cuadrcula pueden tener diferentes anchuras. Para ms detalles, consulte Cmo usar GridBagLayout .

Diseo de cuadrcula

GridLayoutsimplemente hace un montn de componentes iguales en tamao y los muestra en el nmero solicitado de filas y
columnas. Para ms detalles, consulte Cmo usar GridLayout .

GroupLayout

GroupLayoutes un controlador de distribucin que fue desarrollado para el uso de las herramientas de desarrollo GUI, pero
tambin se puede utilizar manualmente. GroupLayouttrabaja con los diseos horizontal y vertical por separado. La disposicin
se define para cada dimensin de forma independiente. En consecuencia, sin embargo, cada componente debe ser definido dos veces
en el diseo. La ventana de bsqueda se muestra ms arriba es un ejemplo de una
consulte Cmo utilizar GroupLayout .

SpringLayout

GroupLayout. Para ms detalles,

SpringLayoutes un controlador de distribucin flexible diseado para su uso por los constructores de GUI. Se le permite
especificar las relaciones precisas entre los bordes de los componentes bajo su control. Por ejemplo, es posible definir que el borde
izquierdo de un componente es una cierta distancia (que se puede calcular de forma dinmica) desde el borde derecho de un segundo
componente. SpringLayoutEstablece a los hijos de su contenedor asociado de acuerdo con un conjunto de restricciones, ya
que deber verse en Cmo utilizar SpringLayout

Gestores de diseo
Un controlador de distribucin es un objeto que implementa la

LayoutManagerinterfaz * y determina el tamao y la posicin de

los componentes dentro de un contenedor. Aunque los componentes pueden proporcionar tamao y la alineacin consejos, controlador
de distribucin de un envase tiene la ltima palabra sobre el tamao y la posicin de los componentes dentro del contenedor.

Nota: Esta leccin cubre escribir cdigo de diseo a mano, que puede ser un reto. Si no est interesado en conocer todos los detalles
de la gestin de diseo, es posible que prefiera utilizar el

GroupLayoutgestor de diseo combinado con una herramienta de

desarrollo para disear su interfaz grfica de usuario. Una de estas herramientas es el constructor IDE NetBeans . De lo contrario, si
desea codificar a mano y no desea utilizar GroupLayout, a continuacin, GridBagLayoutse recomienda que el prximo
director de diseo ms flexible y potente.

Si usted est interesado en utilizar JavaFX para crear su interfaz grfica de usuario, vea Trabajar con formatos de JavaFX .
En esta seccin se describen algunas de las tareas comunes relacionadas con el uso de controladores de distribucin:

Configuracin del Controlador de Distribucin

Adicin de componentes a un contenedor

Proporcionar tamao y la alineacin Consejos

Poner espacio entre los componentes

Definicin de la orientacin del contenedor

Consejos para elegir un controlador de distribucin

Terceros Controladores de Distribucin

Configuracin del Controlador de Distribucin

JPanel
s y paneles de
FlowLayout, a menos que se especifique de manera diferente
cuando se crea el JPanel. Paneles de contenido utilizan BorderLayoutde forma predeterminada. Si no te gusta el
Como regla general, los nicos recipientes cuyo diseo gerentes que usted necesita preocuparse acerca son
contenido . Cada JPanelobjeto se inicializa para utilizar una

controlador de distribucin por defecto de que un panel o panel de contenido utiliza, usted es libre de cambiar a uno diferente. Sin
embargo, a menos que est utilizando

JToolBar, el FlowLayouty BorderLayoutlos gestores slo son tiles para la

creacin de prototipos. Cualquier aplicacin real ser necesario restablecer el controlador de distribucin. Una vez ms, se debe utilizar
una herramienta apropiada para ello, en lugar de codificar el gerente de la mano.
Puede configurar el controlador de distribucin de un panel utilizando el

JPanelconstructor. Por ejemplo:

Panel JPanel = new JPanel (nueva BorderLayout ());


Una vez creado un contenedor, puede configurar su controlador de distribucin mediante el

setLayoutmtodo. Por ejemplo:

Recipiente contentPane = frame.getContentPane ();


contentPane.setLayout (nueva FlowLayout ());

A pesar de que recomendamos que utilice controladores de distribucin, se puede realizar el diseo sin ellos. Al establecer la propiedad
del diseo de un contenedor a nula, a sacar el contenedor no utilice el gestor de diseo. Con esta estrategia, llamada posicin absoluta ,
se debe especificar el tamao y la posicin de cada componente dentro de ese contenedor. Una desventaja de la posicin absoluta es
que no ajusta bien cuando se cambia el tamao del contenedor de nivel superior. Asimismo, no se adaptan bien a las diferencias entre
usuarios y sistemas, tales como diferentes tamaos de fuente y locales .

Adicin de componentes a un contenedor


Cuando se agrega componentes de un panel o panel de contenido, los argumentos que se especifiquen en el

addmtodo dependen

del controlador de disposicin que el panel o panel de contenido est utilizando. De hecho, algunos controladores de distribucin ni
siquiera requieren que aadir el componente de forma explcita; por ejemplo, GroupLayout. Por
ejemplo, BorderLayoutrequiere que se especifique el rea a la que hay que aadir el componente (utilizando una de las
constantes definidas en

BorderLayout) utilizando cdigo como el siguiente:

pane.add (aComponent, BorderLayout.PAGE_START);


La seccin de cmo hacerlo para cada controlador de distribucin tiene ms informacin sobre lo que, en su caso, los argumentos es
necesario especificar al

addmtodo. Algunos controladores de distribucin, tales

como GridBagLayouty SpringLayout, requieren procedimientos de configuracin complicados. Muchos


administradores de diseo, sin embargo, slo tienen que colocar los componentes basados en el orden en que se aadieron al
recipiente que los contiene.
Recipientes que no sean batientes

JPanely paneles de contenido generalmente proporcionan API que se debe utilizar en lugar

del addmtodo. Por ejemplo, en lugar de aadir un componente directamente a un panel de desplazamiento (o, en realidad, a su
vista), que o bien especificar el componente en el

JScrollPaneconstructor o el uso setViewportView. Debido a la

API especializado como este, no es necesario saber qu controlador de distribucin (si lo hay) muchos contenedores Swing usan. (Para
los curiosos: desplazarse paneles de pasar a utilizar un controlador de distribucin llamado

ScrollPaneLayout.)

Para obtener informacin acerca de cmo agregar componentes a un contenedor especfico, consulte la pgina de cmo hacerlo para el
contenedor. Usted puede encontrar el componente de cmo hacerlo utilizando pginas Cmo utilizar varios componentes .

Proporcionar tamao y la alineacin Consejos


A veces es necesario personalizar las indicaciones del tamao para que un componente que proporciona el controlador de distribucin
de su recipiente, de modo que el componente ser bien presentada. Puede hacerlo especificando uno o ms de lo mnimo, preferido y
tamaos mximos de la componente. Puede llamar a los mtodos del componente para establecer las indicaciones del tamao
- setMinimumSize, setPreferredSizey setMaximumSize. O puede crear una subclase del componente
que anula los mtodos captadores apropiados
- getMinimumSize, getPreferredSizey getMaximumSize. Aqu est un ejemplo de lo que el tamao
mximo de un componente ilimitada:

component.setMaximumSize (nueva dimensin (Integer.MAX_VALUE,


Integer.MAX_VALUE));
Muchos controladores de distribucin no prestan atencin al tamao mximo solicitado de un componente. Sin
embargo, BoxLayouty SpringLayouthacer. Adems, GroupLayoutofrece la posibilidad de establecer el mnimo,
el tamao preferido o mximo explcitamente, sin tocar el componente.
Adems de proporcionar sugerencias de tamao, tambin puede proporcionar pistas de alineacin. Por ejemplo, puede especificar que
los bordes superiores de dos componentes deben estar alineados. Configura los consejos de alineamiento ya sea invocando el
componente de setAlignmentXy setAlignmentYmtodos, o por razones imperiosas del
componente getAlignmentXy getAlignmentYmtodos. Aunque la mayora de los controladores de distribucin
ignoran los consejos de alineamiento,

BoxLayoutlos honra. Puede encontrar ejemplos de configuracin de la alineacin en Cmo

utilizar BoxLayout .

Poner espacio entre los componentes

Hay tres factores que influyen en la cantidad de espacio entre los componentes visibles en un recipiente:
El controlador de distribucin
Algunos controladores de distribucin ponen automticamente el espacio entre los componentes; otros no lo
hacen. Algunos le permite especificar la cantidad de espacio entre los componentes. Ver la pgina de cmo hacerlo
para cada controlador de distribucin para obtener informacin sobre el espaciamiento de apoyo.
componentes invisibles
Puede crear componentes ligeros que realizan ninguna pintura, pero que puede ocupar espacio en la interfaz grfica de
usuario. A menudo, se utilizan componentes invisibles en contenedores controlados por

BoxLayout. Ver Cmo

usar BoxLayout de ejemplos del uso de componentes invisibles.


bordes vacos
No importa cul sea el controlador de distribucin, puede afectar a la cantidad aparente de espacio entre los
componentes aadiendo bordes vacos a los componentes. Los mejores candidatos para bordes vacos son
componentes que normalmente no tienen un borde predeterminado, como paneles y etiquetas. Algunos otros
componentes podran no funcionar bien con bordes en algunas implementaciones look-and-feel, debido a la forma en
que se implementa el cdigo de la pintura. Para obtener informacin acerca de los bordes, consulte Cmo usar
Borders .

Definicin de la orientacin del contenedor


Este sitio web est escrito en Ingls, con el texto que va de izquierda a derecha y luego de arriba abajo. Sin embargo, muchos otros
idiomas tienen diferentes orientaciones. La componentOrientationpropiedad ofrece una forma de indicar que un
componente particular, debe usar algo diferente a la predeterminada de izquierda a derecha y de arriba a abajo la orientacin. En un
componente, como un botn de radio, la orientacin podra ser utilizado como un indicio de que la apariencia deben cambiar las
ubicaciones del icono y el texto en el botn. En un recipiente, la orientacin se utiliza como una sugerencia para el controlador de
distribucin.
Para establecer la orientacin de un contenedor, puede utilizar el

Componentmtodo de

-definida setComponentOrientationo, para definir la orientacin de los nios del contenedor,


as, applyComponentOrientation. El argumento para cualquiera de los mtodos puede ser un tan constante
como ComponentOrientation.RIGHT_TO_LEFT, o puede ser una llamada
al ComponentOrientationmtodo getOrientation(Locale). Por ejemplo, el cdigo siguiente hace que
todos los JComponents que ser inicializado con una configuracin regional en idioma rabe, y luego fija la orientacin del panel
de contenido y todos los componentes en su interior en consecuencia:

JComponent.setDefaultLocale (nueva Locale ( "AR"));


JFrame frame = new JFrame ();
...
Recipiente contentPane = frame.getContentPane ();
contentPane.applyComponentOrientation (
ComponentOrientation.getOrientation (
contentPane.getLocale ()));
Aqu hay dos imgenes que muestran cmo

FlowLayoutexpone componentes en contenedores que son exactamente lo mismo,

excepto por su orientacin.

Orientacin por defecto (de izquierda a derecha)

De derecha a izquierda de la orientacin

Los administradores de diseo estndar que admiten la orientacin componente


son FlowLayout, BorderLayout, BoxLayout, GridBagLayout, y GridLayout.

Nota: Se debe tener cuidado de que la orientacin componente se aplica a los recicladores, editores y cualquier otro componente
inalcanzables a travs de recorrido normal del rbol de contenidos.

Consejos para elegir un controlador de distribucin


Los administradores de diseo tienen diferentes fortalezas y debilidades. En esta seccin se discuten algunos escenarios de diseo
comunes, y que los administradores de diseo podra funcionar para cada escenario. Sin embargo, una vez ms, se recomienda
encarecidamente que utilice una herramienta de desarrollo para crear sus controladores de distribucin, tales como el constructor de
NetBeans IDE Matisse interfaz grfica de usuario , en lugar de la codificacin de los administradores con la mano. Los escenarios se
enumeran a continuacin se dan a ttulo indicativo, en caso de que eres curioso acerca de qu tipo de administrador se utiliza en
diferentes situaciones, o en caso de que sea absolutamente necesario codificar el gestor de forma manual.
Si ninguno de los controladores de distribucin que discutimos es adecuado para su situacin y no se puede utilizar una herramienta de
creacin, no dude en utilizar otros controladores de distribucin que puede escribir o encontrar. Tambin hay que tener en cuenta que
los controladores de distribucin flexibles, tales como

GridBagLayouty SpringLayoutpueden satisfacer muchas

necesidades de diseo.
Escenario: Necesitamos mostrar un componente en el mismo espacio que se puede conseguir.
Si es el nico componente de su contenedor, utilice

GridLayouto BorderLayout. De lo

contrario, BorderLayouto GridBagLayoutpodra ser un buen partido.


Si se utiliza BorderLayout, se tendr que poner el componente que consumen mucho espacio en el
centro. Con GridBagLayout, usted tendr que establecer las restricciones para el componente de modo
que fill=GridBagConstraints.BOTH. Otra posibilidad es utilizar BoxLayout, por lo que el
componente de espacio de hambre especificar tamaos muy grandes preferidos y mximo.
Escenario: Necesitamos mostrar unos pocos componentes en una fila compacta en su tamao natural.
Considere el uso de una

JPanelagrupar los componentes y utilizando el JPanel'default

s FlowLayoutgerente o la BoxLayoutgerente. SpringLayoutTambin es bueno para esto.


Escenario: Necesitamos mostrar unos pocos componentes del mismo tamao en filas y columnas.

GridLayout es perfecto para esto.


Escenario: Necesitamos mostrar unos pocos componentes en una fila o columna, posiblemente con cantidades variables de espacio
entre ellos, la alineacin de encargo, o los tamaos de componente personalizado.

BoxLayout es perfecto para esto.


Escenario: Necesitamos mostrar columnas alineadas, como en una interfaz de formulario como el que se utiliza una columna de
etiquetas para describir los campos de texto en una columna adyacente.

SpringLayoutes una eleccin natural para esto. La SpringUtilitiesclase utilizada por varios
ejemplos del manual define un makeCompactGridmtodo que le permite alinear fcilmente varias filas y
columnas de los componentes.
Escenario: Usted tiene un diseo complejo con muchos componentes.
Considere, ya sea usando un controlador de disposicin muy flexible, tal
como GridBagLayouto SpringLayout, o la agrupacin de los componentes en uno o
ms JPanels para simplificar el diseo. Si se toma el ltimo enfoque, cada uno JPanelpodra utilizar un gestor
de diseo diferente.

Controladores de Distribucin de Terceros


Otros controladores de distribucin de terceros han sido creados por la comunidad Swing, para complementar los proporcionados por la
plataforma Java. La siguiente lista es de ninguna manera definitiva, pero los controladores de distribucin se indican a continuacin son
los ms populares:

MiGLayout

FormLayout de Karsten Lentzsch

S-ar putea să vă placă și