Solicitud de asesoramiento: Cómo utilizar el diseño GridBagLayout en Java
¿Cómo puedes usar GridBagLayout en esta imagen? Para el JPanel de la izquierda, puedes usar BoxLayout o Borderlayout. Lo mismo ocurre con el botón en la esquina inferior derecha. para que el campo de texto quede cubierto.
Dame el código de GridBagLayout y descúbrelo tú mismo
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
importar java.awt.Insets;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing. JTextField;
@SuppressWarnings("serial")
clase pública GridBagLayoutTest extiende JFrame {
public GridBagLayoutTest(){
setLayout( new GridBagLayout ());
restricciones GridBagConstraints = new GridBagConstraints();
restricciones.insets = new Insets(5,5,5,5);//arriba,izquierda, abajo, derecha en sentido contrario a las agujas del reloj
JButton b = new JButton("One");
/*
* Cuando el tamaño del formulario cambia, agregue espacio adicional Rellenar las celdas de la cuadrícula
* pesox es la dirección horizontal, peso es la dirección vertical
* El valor es 0.0~1.0, cuanto mayor es el valor, más espacio se asigna
*/
restricciones.weightx = 1.0;
restricciones.weighty = 1.0;
restricciones.gridx = 0;
restricciones .gridy = 0;
restricciones.gridwidth = 2;
agregar(b,constraints);
b = new JButton("Dos" );
constraints.gridy++;
agregar(b,constraints);
b = new JButton("Tres");
restricciones. > restricciones .gridwidth = 1;
restricciones.gridheight = 2;
agregar(b,constraints);
b = nuevo JButton("Cuatro") ;
restricciones.anchor = GridBagConstraints.CENTER;
restricciones.gridx = 3;
restricciones.gridheight = 1;
restricciones .gridwidth = 2;
agregar(b,constraints);
b =
new JButton("Cinco");
constraints.gridy = 1;
constraints.gridwidth = 2;
add(b,constraints); p> p>
JTextField texto = nuevo JTextField(40);
restricciones.gridx = 0;
restricciones.gridy = 2;
/ /Usar REMAINDER puede hacer que el componente se extienda infinitamente hasta el borde
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.gridheight = 1;
constraints.weighty = 0.0;
/*
* Si queda espacio en la celda donde se encuentra el componente, el componente llenará la celda consigo mismo
* Cuando se asignan pesox y peso El ancla es válida solo cuando se establece el valor
* Los valores posibles son
* NINGUNO valores predeterminados
* VERTICAL p>
* HORIZONTAL
* AMBOS
*/
constraints.fill = GridBagConstraints.HORIZONTAL;
add(texto , restricciones);
pack ();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String [] args){
//new GridBagLayoutTest();
new A();
}
}
/*
* atributo de anclaje, coloca el componente en una dirección fija de la celda
* Cuando el relleno es efectivo horizontalmente, OESTE y ESTE se usan para el anclaje Inválido
* Cuando el relleno es válido verticalmente, NORTE y SUR no son válidos para el anclaje
* El anclaje solo es válido cuando se han asignado pesox y peso valores
*/
@SuppressWarnings("serial")
clase A extiende JFrame {
public A(){ p>
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5,5,5,5) ;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 1;
c.weightx = 1.0;
c.weighty = 1.0;
c.anchor = GridBagConstraints.NORTH;
J
Botón b = nuevo JButton("N");
add(b,c);
b = nuevo JButton("E");
c .gridx = 1;
c.gridy = 0;
c.anchor = GridBagConstraints.EAST;
agregar(b,c);
b = nuevo JButton("S");
c.gridx = 1;
c.gridy = 1;
c.anchor = GridBagConstraints.SOUTH;
add(b,c);
b = new JButton("W");
c.fill = GridBagConstraints.VERTICAL ;
c.gridx = 0;
c.gridy = 1;
c.anchor = GridBagConstraints.WEST;
agregar (b,c);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}