GridLayout'u JPanel'e ayarlayıp bir şey eklediğimde, daha sonra "metin sırası" nda (soldan sağa, yukarıdan aşağıya) eklenir. Ancak belirli bir hücreye (j-inci sütunundaki i-inci satırında) bir eleman eklemek istiyorum. Mümkün mü?Bir GridLayout kullanıldığında belirli bir ızgara hücresine bileşen ekleyebilir miyim?
cevap
Hayır, bileşenleri belirli bir hücreye ekleyemezsiniz. Yapabilecekleriniz boş JPanel nesnelerini eklemek ve bunlara bir dizide atıfta bulunmaktır, daha sonra bileşenleri istediğiniz herhangi bir sıraya göre eklemektir.
şey gibi: Daha sonra Sonra
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]);
}
}
, sen JPanel nesnelerden birine doğrudan ekleyebilirsiniz:
panelHolder[2][3].add(new JButton("Foo"));
Evet
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2,1,1));
JButton component= new JButton("Component");
panel.add(component, 0,0);
senin paneli oluşturun ve set onun düzeni.
yeni GridLayout (numberOfRows, numberOfColums, HorizontalGap, VerticleGap)
(yeni GridLayout (2,2,1,1)) => burada ben 2 satır, 2 kolon,
istiyoruz - herhangi bir yatay halinde boşluklar (HGap), 1px (1unit)
olmalıdır - Ben de dikey boşluklar için aynı istiyorum, bu yüzden dikey boşluklar (VGap) ile aynı. yani 1 birim
- Bu durumda; boşluklar => boşluk/kenar boşlukları/dolgu - bu anlamda.
, bileşenleri oluşturmak ve panel
ekleyin - (bileşen, 0,0) => 0,0 (2d dizi gibi) satır ve sütun .. olup.
, bileşeninizin nereye gideceği satırı ve sütunu koyarak nereye gittiğini belirtin.
her hücre bir yere == [satır] [sütun]
sahiptir Yoksa hgaps ve vgaps olmadan yapabilirsiniz:
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2));
JButton component= new JButton("Component");
panel.add(component, 0,0);
Yoksa GridLayout' 'bağlı değilse, sen [kullanabilirsiniz 'GridBagLayout'] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) – bluefoot