2010-03-24 8 views

Répondre

38

Non, vous ne pouvez pas ajouter de composants dans une cellule spécifique. Ce que vous pouvez faire est d'ajouter des objets JPanel vides et de conserver les références dans un tableau, puis de leur ajouter des composants dans l'ordre que vous voulez.

Quelque chose comme:

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]); 
    } 
} 

Puis, plus tard, vous pouvez ajouter directement à l'un des objets JPanel:

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

Ou, si vous n'êtes pas lié à 'GridLayout', vous pouvez utiliser [ 'GridBagLayout'] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) – bluefoot

4

Oui

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

Créez votre panneau et définissez sa disposition.
nouvelles GridLayout (numberOfRows, numberOfColums, horizontalGap, VerticleGap)

(nouveau GridLayout (2,2,1,1))   => ici je veux 2 lignes, 2 colonnes,
- le cas échéant horizontal lacunes (HGap), ils devraient être 1px (1unit)
- Je veux également la même chose pour les écarts verticaux, donc je fais la même chose que les écarts verticaux (VGap). i.e 1 unité
- Dans ce cas; lacunes   => espacement/marges/rembourrage - dans ce sens.

Créez vos composants et les ajouter au panneau
- (composant, 0,0)   => 0,0 est la ligne et la colonne .. (comme un tableau 2d).
spécifiez où votre composant va en plaçant la ligne et la colonne où il devrait aller.
chaque cellule a un emplacement == [ligne] [colonne]

Ou vous pouvez le faire sans hgaps et vgaps:

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