2010-03-24 21 views

Odpowiedz

38

Nie, nie można dodawać komponentów do konkretnej komórki. Możesz dodać puste obiekty JPanel i trzymać się odniesień do nich w tablicy, a następnie dodawać do nich komponenty w dowolnej kolejności.

Coś jak:

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

Później można dodać bezpośrednio do jednego z obiektów JPanel:

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

Lub, jeśli nie są związane z 'GridLayout', można użyć [ 'GridBagLayout'] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) – bluefoot

4

Tak

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

Utwórz panel i ustawić jej układ.
nowe GridLayout (numberOfRows, numberOfColums, HorizontalGap, VerticleGap)

(nowa GridLayout (2,2,1,1))   => tutaj chcę 2 rzędy, 2 kolumny,
- jeśli w ogóle poziome luki (HGap), powinny być 1px (1jednostka)
- Też chcę to samo dla pionowych szczelin, więc robię to samo co pionowe luki (VGap). tj. 1 jednostka
- W tym przypadku; luki   => odstępy/marginesy/dopełnienie - w tym sensie.

Tworzenie składniki i dodać je do centrali
- (składnik, 0,0)   => 0,0 jest rzędu i kolumny .. (jak 2d tablicy).
należy określić, gdzie podziała się dany komponent, umieszczając wiersz i kolumnę w miejscu, w którym powinien się znaleźć.
każda komórka ma == lokalizacji [wiersz] [kolumny]

Albo można to zrobić bez hgaps i vgaps:

JPanel panel = new JPanel();   
    panel.setLayout(new GridLayout(2,2)); 
    JButton component= new JButton("Component"); 
    panel.add(component, 0,0); 
Powiązane problemy