Introducción a GroupLayout en Java

En GroupLayout en Java, los administradores de diseño son como diferentes tipos de "ajustes de Word" para componentes java. De la misma manera que la función "Ajuste de texto" envuelve los caracteres del texto a la siguiente línea en un procesador de textos, los administradores de diseño envuelven los "Componentes de giro" alrededor del área visible de un JFrame o JApplet. Los administradores de diseño se derivan del paquete AWT. GroupLayout managers es un LayoutManager que agrupa los componentes y los organiza en un JFrame o JApplet. Se utiliza para desarrollar la interfaz gráfica de usuario.

Para los componentes, GroupLayout está utilizando dos tipos de arreglos:

  • Disposición secuencial: en esta disposición, los componentes se organizan uno tras otro en secuencia.
  • Disposición paralela: en esta disposición, los componentes se colocan paralelamente en el mismo lugar.

Cuando están anidados jerárquicamente, estos dos arreglos se vuelven más poderosos para lo que GroupLayout define grupos de diseño. Un grupo puede ser paralelo o secuencial y puede contener componentes, otros grupos y huecos.

  • Tamaño del grupo secuencial: Suma de los tamaños de todos los componentes contenidos en un contenedor.
  • Tamaño del grupo paralelo: tamaño del componente más grande en un contenedor.

Constructor de la clase GroupLayout en Java

A continuación se muestra el constructor de la clase grouplayout:

GroupLayout (Host de contenedor): para el contenedor especificado, crea un GroupLayout.

Ejemplo:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel grpPanel = new JPanel();
GroupLayout grpLayout = new GroupLayout(grpPanel);
)

Definición de un diseño: forma de organizar los componentes dentro del JFrame o JApplet combinando grupos secuenciales y paralelos.

Ejemplos para implementar GroupLayout en Java

A continuación se muestran los diferentes ejemplos para implementar GroupLayout en Java:

Ejemplo 1

Comencemos con un ejemplo simple, que tiene dos componentes en una fila.

Describiremos este diseño usando grupos. Comenzando con el eje horizontal, un grupo secuencial de dos componentes que comienza de izquierda a derecha. Comenzando con el eje vertical, un grupo paralelo de dos componentes con la misma posición.

Código:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
gl.setVerticalGroup(gl.createParallelGroup()
.addComponent(BFirst)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Salida:

Ejemplo # 2

Supongamos que tiene dos componentes como a continuación:

Describiremos este diseño usando grupos. Comenzando con el eje horizontal, un grupo secuencial de dos componentes que comienza de izquierda a derecha. Comenzando con el eje vertical, un grupo secuencial de dos componentes de izquierda a derecha.

Código:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Salida:

Ejemplo # 3

Un Gap es como un componente invisible de cierto tamaño.

A menudo se usan para controlar la distancia entre los componentes o desde el borde del contenedor. También define espacios automáticos como distancias preferidas entre componentes vecinos. Utiliza tres tipos de espacios entre componentes o componentes y bordes: RELACIONADOS, NO RELACIONADOS e INDENTADOS. Algo exclusivo de los grupos secuenciales son las brechas. Los huecos separan los componentes por la cantidad de píxeles indicados. Ahora daremos un espacio horizontal de 20 y un espacio vertical de 30.

Código:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addGap(20)
.addComponent(BSecond));
gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addGap(30)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Salida:

Ejemplo # 4

Pero, ¿qué pasa si queremos una brecha en un grupo paralelo?

Pero las brechas no se pueden usar en grupos paralelos. Por lo tanto, se utiliza un método diferente para crear una brecha. Utiliza una combinación de grupos paralelos y secuenciales. Comienza con un grupo paralelo y el primer componente. Entonces, tiene un grupo secuencial dentro del grupo paralelo. Y agrega una brecha dentro de este grupo secuencial y finalmente agrega el segundo componente. Los grupos verticales contienen ambos componentes de manera secuencial.

Código:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel panel = new JPanel();
JButton BFirst = new JButton("First");
JButton BSecond = new JButton("Second");
GroupLayout gl = new GroupLayout(panel);
public GroupLayoutExample() (
panel.setLayout(gl);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
gl.setHorizontalGroup(gl.createParallelGroup()
.addComponent(BFirst)
.addGroup(gl.createSequentialGroup()
.addGap((int)(BFirst.getMinimumSize().getWidth()/2))
.addComponent(BSecond))
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond));
)
public void Build() (
setContentPane(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Salida:

Ejemplo # 5

Ahora crearemos diseños compuestos.

Necesitamos crear un diseño de cuadrícula y JPanel para admitir el diseño y configurar cuatro botones en un patrón (2, 2). Primero, comenzamos con un grupo paralelo en el grupo horizontal seguido de agregar el panel de diseño de cuadrícula. Y el grupo secuencial en el grupo paralelo y agregando los dos botones en orden secuencial horizontalmente. Luego, en el grupo vertical, comienza con un grupo secuencial. Luego agregaremos el diseño de cuadrícula JPanel. A continuación, viene un grupo paralelo para los dos botones. Y finalmente, el método de construcción terminado.

Código:

import java.awt.*;
import javax.swing.*;
public class GroupLayoutExample extends JFrame(
JPanel grpPanel = new JPanel(), grdPanel = new JPanel();
JButton BFirst = new JButton("First"), BSecond = new JButton("Second"), BGrid() = new JButton(4);
GroupLayout grpLayout = new GroupLayout(grpPanel);
GridLayout grdLayout = new GridLayout(2, 2);
public GroupLayoutExample() (
grpPanel.setLayout(grpLayout);
SetButton(BFirst, 100, 30);
SetButton(BSecond, 100, 30);
SetLayout();
Build();
)
public void SetButton(JButton button, int width, int height) (
button.setMinimumSize(new Dimension(width, height));
)
public void SetLayout() (
for(int i=0; i<4; i++) (
BGrid(i) = new JButton(String.valueOf(i+1));
grdPanel.add(BGrid(i));
)
grdPanel.setLayout(grdLayout);
grpLayout.setHorizontalGroup(grpLayout.createParallelGroup()
.addComponent(grdPanel)
.addGroup(grpLayout.createSequentialGroup()
.addComponent(BFirst)
.addComponent(BSecond))
);
grpLayout.setVerticalGroup(grpLayout.createSequentialGroup()
.addGroup(grpLayout.createParallelGroup()
.addComponent(BFirst)
.addComponent(BSecond))
.addComponent(grdPanel)
);
)
public void Build() (
setContentPane(grpPanel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("GroupLayout Example");
setVisible(true);
)
public static void main(String() args) (
new GroupLayoutExample();
)
)

Salida:

Conclusión

GroupLayout es útil cuando desea agrupar jerárquicamente sus componentes en un contenedor. Algunos de los métodos útiles que hemos utilizado en este artículo son:

  1. Java GroupLayout .createParallelGroup (): crea y devuelve un grupo paralelo.
  2. Java GroupLayout .createSequentialGroup (): crea y devuelve un SequentialGroup.

Artículos recomendados

Esta es una guía para GroupLayout en Java. Aquí discutimos el constructor de la clase grouplayout en cinco ejemplos diferentes. También puede consultar nuestros otros artículos relacionados para obtener más información:

  1. BorderLayout en Java
  2. BoxLayout en Java
  3. Diseño de cuadrícula en Java
  4. CardLayout en Java
  5. Diseño HTML