Buscar..


Sintaxis

  • frame.setLayout (new GridBagLayout ()); // Establecer GridBagLayout para el marco
  • pane.setLayout (new GridBagLayout ()); // Establecer GridBagLayout para Panel
  • Panel de JPanel = nuevo JPanel (nuevo GridBagLayout ()); // Establecer GridBagLayout para Panel
  • GridBagConstraints c = new GridBagConstraints () // Inicializar una GridBagConstraint

¿Cómo funciona GridBagLayout?

Los diseños se utilizan cuando usted desea que sus componentes no solo se muestren uno junto al otro. El GridBagLayout es útil, ya que divide su ventana en filas y columnas, y usted decide en qué fila y columna colocar los componentes, así como en cuántas filas y columnas es grande el componente.

Tomemos esta ventana como ejemplo. Se han marcado las líneas de cuadrícula para mostrar el diseño.

GridBagLayout visualizado

Aquí, he creado 6 componentes, distribuidos utilizando un GridBagLayout.

Componente Posición tamaño
JLabel : "My Amazing Swing Application" 0, 0 3, 1
JButton : "Botón A" 0, 1 1, 1
JButton : "Botón B" 1, 1 1, 1
JButton : "Botón C" 2, 1 1, 1
JSlider 0, 2 3, 1
JScrollBar 0, 3 3, 1

Tenga en cuenta que la posición 0, 0 está en la parte superior izquierda: los valores de x (columna) aumentan de izquierda a derecha, los valores de y (fila) aumentan de arriba a abajo.

Para comenzar a diseñar los componentes en un GridBagLayout , primero establezca el diseño de su JFrame o panel de contenido.

frame.setLayout(new GridBagLayout());
//OR
pane.setLayout(new GridBagLayout());
//OR
JPanel pane = new JPanel(new GridBagLayout()); //Add the layout when creating your content pane

Tenga en cuenta que nunca define el tamaño de la cuadrícula. Esto se hace automáticamente a medida que agrega sus componentes.

Luego, deberá crear un objeto GridBagConstraints .

GridBagConstraints c = new GridBagConstraints();

Para asegurarse de que sus componentes llenen el tamaño de la ventana, es posible que desee establecer el peso de todos los componentes en 1. El peso se utiliza para determinar cómo distribuir el espacio entre columnas y filas.

c.weightx = 1;
c.weighty = 1;

Otra cosa que quizás desee hacer es asegurarse de que los componentes ocupen todo el espacio horizontal que puedan.

c.fill = GridBagConstraints.HORIZONTAL;

También puede establecer otras opciones de relleno si lo desea.

GridBagConstraints.NONE //Don't fill components at all
GridBagConstraints.HORIZONTAL //Fill components horizontally
GridBagConstraints.VERTICAL //Fill components vertically
GridBagConstraints.BOTH //Fill components horizontally and vertically

Al crear componentes, querrá establecer dónde debe ir en la cuadrícula y cuántos mosaicos de cuadrícula debe usar. Por ejemplo, para colocar un botón en la tercera fila en la segunda columna y ocupar un espacio de cuadrícula de 5 x 5, haga lo siguiente. Tenga en cuenta que la cuadrícula comienza en 0, 0 , no 1, 1 .

JButton button = new JButton("Fancy Button!");
c.gridx = 2;
c.gridy = 1;
c.gridwidth = 5;
c.gridheight = 5;
pane.add(buttonA, c);

Al agregar componentes a su ventana, recuerde pasar las restricciones como un parámetro. Esto se puede ver en la última línea en el ejemplo de código anterior.

Puede reutilizar las mismas GridBagConstraints para cada componente; cambiarlo después de agregar un componente no cambia el componente agregado previamente.

Ejemplo

Aquí está el código para el ejemplo al comienzo de esta sección.

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(new GridBagLayout()); //Create a pane to house all content, and give it a GridBagLayout
frame.setContentPane(pane);

GridBagConstraints c = new GridBagConstraints();
c.weightx = 1;
c.weighty = 1;
c.fill = GridBagConstraints.HORIZONTAL;

JLabel headerLabel = new JLabel("My Amazing Swing Application");
c.gridx = 0;
c.gridwidth = 3;
c.gridy = 0;
pane.add(headerLabel, c);

JButton buttonA = new JButton("Button A");
c.gridx = 0;
c.gridwidth = 1;
c.gridy = 1;
pane.add(buttonA, c);

JButton buttonB = new JButton("Button B");
c.gridx = 1;
c.gridwidth = 1;
c.gridy = 1;
pane.add(buttonB, c);

JButton buttonC = new JButton("Button C");
c.gridx = 2;
c.gridwidth = 1;
c.gridy = 1;
pane.add(buttonC, c);

JSlider slider = new JSlider(0, 100);
c.gridx = 0;
c.gridwidth = 3;
c.gridy = 2;
pane.add(slider, c);

JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL, 20, 20, 0, 100);
c.gridx = 0;
c.gridwidth = 3;
c.gridy = 3;
pane.add(scrollBar, c);

frame.setVisible(true); //Show the window

Ejemplo GridBagLayout



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow