Peleando con GridBagLayout
Publicado por Kabuto (1385 intervenciones) el 08/08/2019 11:43:19
Hola.
Estoy practicando con un layout que nunca uso, el GridBagLayout.
Quiero colocar 6 botones en esta disposición:

Mi código es este, pero no consigo que Botón 3 ocupe 4 celdas ni que Botón 6 ocupe 2
¿Que hago mal?
En principio las celdas no tienen que crecer, por eso no uso atributos weightx y weighty.
Mi idea es que las celdas midan igual, pero que algunos botones ocupen más de una celda.
Estoy practicando con un layout que nunca uso, el GridBagLayout.
Quiero colocar 6 botones en esta disposición:

Mi código es este, pero no consigo que Botón 3 ocupe 4 celdas ni que Botón 6 ocupe 2
¿Que hago mal?
En principio las celdas no tienen que crecer, por eso no uso atributos weightx y weighty.
Mi idea es que las celdas midan igual, pero que algunos botones ocupen más de una celda.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class GridBag extends JFrame{
public GridBag() {
setLayout(new GridBagLayout());
GridBagConstraints restricciones = new GridBagConstraints();
restricciones.gridx = 0;
restricciones.gridy = 0;
add(new JButton("Botón 1"), restricciones);
restricciones.gridx = 3;
restricciones.gridy = 0;
add(new JButton("Botón 2"), restricciones);
restricciones.gridx = 1;
restricciones.gridy = 1;
restricciones.gridheight = 2; //Dimensiones para Botón 3
restricciones.gridwidth = 2;
restricciones.fill = GridBagConstraints.BOTH;
add(new JButton("Botón 3"), restricciones);
restricciones.gridx = 0;
restricciones.gridy = 3;
restricciones.gridheight = 1; //Para Botón 4 revertimos las dimensiones anteriores
restricciones.gridwidth = 1;
add(new JButton("Botón 4"), restricciones);
restricciones.gridx = 1;
restricciones.gridy = 3;
add(new JButton("Botón 5"), restricciones);
restricciones.gridx = 2;
restricciones.gridy = 3;
restricciones.gridwidth = 2; //Botón 6 solo modificamos el ancho
restricciones.fill = GridBagConstraints.HORIZONTAL;
add(new JButton("Botón 6"), restricciones);
setTitle("Ejemplo GridBagLayout");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setResizable(false);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new GridBag();
}
});
}
}
Valora esta pregunta


0