2010-03-24 13 views

Respuesta

38

No, no puede 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 así 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 tarde, se puede añadir directamente a uno de los objetos JPanel:

panelHolder[2][3].add(new JButton("Foo")); 
+1

O, si usted no está atado a 'GridLayout', se pueden utilizar [ 'GridBagLayout'] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) – bluefoot

4

JPanel panel = new JPanel(); 
    panel.setLayout(new GridLayout(2,2,1,1)); 
    JButton component= new JButton("Component"); 
    panel.add(component, 0,0); 

Crear su panel y establecer su diseño.
nuevos GridLayout (numberOfRows, numberOfColums, horizontalGap, VerticleGap)

(nueva GridLayout (2,2,1,1))   => Aquí quiero 2 filas, 2 columnas,
- si los hay horizontal huecos (HGap), deberían ser de 1px (1unidad)
- También quiero lo mismo para huecos verticales, así que hago lo mismo que huecos verticales (VGap). es decir, 1 unidad
- En este caso; huecos   => espaciado/márgenes/relleno - en ese sentido.

Crear sus componentes y añadirlos 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 célula tiene una ubicación == [fila] [columna]

O usted 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); 
Cuestiones relacionadas