java - setlayout - ¿Puedo agregar un componente a una celda de cuadrícula específica cuando se utiliza un GridLayout?
layout java wikipedia (2)
No, no puedes agregar componentes en una celda específica. Lo que puede hacer es agregar objetos JPanel vacíos y aferrarse a las referencias a ellos en una matriz, luego agregar componentes a ellos en el orden que desee.
Algo como:
int i = 3;
int j = 4;
JPanel[][] panelHolder = new JPanel[i][j];
setLayout(new GridLayout(i,j));
for(int m = 0; m < i; m++) {
for(int n = 0; n < j; n++) {
panelHolder[m][n] = new JPanel();
add(panelHolder[m][n]);
}
}
Luego, más adelante, puede agregar directamente a uno de los objetos de JPanel:
panelHolder[2][3].add(new JButton("Foo"));
Cuando configuro GridLayout en JPanel y luego agrego algo, se agrega posteriormente en el "orden de texto" (de izquierda a derecha, de arriba a abajo). Pero quiero agregar un elemento a una celda específica (en la fila i-ésima en la columna j-ésima). ¿Es posible?
Sí
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2,1,1));
JButton component= new JButton("Component");
panel.add(component, 0,0 );
Crea tu panel y establece su diseño.
nuevo GridLayout (numberOfRows, numberOfColums, HorizontalGap, VerticleGap)
(nuevo GridLayout (2,2,1,1)) => aquí quiero 2 filas, 2 columnas,
- si hay espacios horizontales (HGap), deben ser 1px (1 unidad)
- También quiero lo mismo para huecos verticales, así que hago lo mismo que huecos verticales (VGap). es decir, 1 unidad
-- En este caso; espacios => espacio / márgenes / relleno - en ese sentido.
Crea tus componentes y agrégalos al panel
- (componente, 0,0) => 0,0 es la fila y la columna .. (como una matriz 2d).
especifica a dónde va tu componente colocando la fila y la columna donde debería ir.
cada celda tiene una ubicación == [fila] [columna]
O puede hacerlo sin hgaps y vgaps:
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2));
JButton component= new JButton("Component");
panel.add(component, 0,0 );