2012-04-10 24 views
5

Bir Bileşenler Listesi üzerinde yineleme ve bunları Swing GroupLayout içinde bir ParallelGroup'a eklemenin bir yolu var mı?Bileşenleri Swing GroupLayout ParallelGroup'a yinelemeli olarak ekleme?

Bu zor görünüyor çünkü ParallelGroup'u ele geçirme yöntemi yoktur.

Burada bir Bileşen Listesi oluşturan kod (bu durumda, JCheckBoxes).

List<JCheckBox> listCustomiseJCB = new ArrayList<>(); 
    for (int w = 0; w < initialCMTableColumns.size(); w++) { 
     String heading = (String)initialCMTableColumns.get(w).getHeaderValue(); 
     listCustomiseJCB.add(new JCheckBox(heading)); 
    } 

Liste çalışıyor, ancak bir GroupLayout en ParallelGroup içine her JCheckBox eklemek için List üzerinde yineleme nasıl? Örneğin, aşağıdaki kod derlenmez. Ben iteratif döngü için bir Bağımsızdaki bu gruba Bileşenleri eklemek diye

GroupLayout gl = new GroupLayout(jpnlCustomise); 
    jpnlCustomise.setLayout(gl); 
    gl.setAutoCreateContainerGaps(true); 
    gl.setAutoCreateGaps(true); 

    GroupLayout.SequentialGroup hGroup = gl.createSequentialGroup(); 

    hGroup 
      .addComponent(jbtnApply); 
    hGroup.addGroup(gl.createParallelGroup(GroupLayout.Alignment.CENTER) 
      // ERRORS BEGIN HERE 
      { for (JCheckBox c: listCustomiseJCB) { 
      .addComponent(c); 
      }}); 
      // ERRORS END HERE 
    hGroup 
      .addComponent(jbtnCancel); 

    gl.setHorizontalGroup(hGroup); 

Alternatif herkes bir ParallelGroup ele almak için bir yol biliyor mu?

+3

+1. – Adam

+0

Teşekkür ederim. GroupLayout'u da seviyorum, çok etkili! – Arvanem

+1

Burada (daha az esnek) bir örnek var [burada] (http://stackoverflow.com/a/8504753/230513). – trashgod

cevap

6

Ne yapmaya çalıştığınızı ve karışıklığınızı görebiliyorum. Anonim sınıf sözdizimini yalnızca yeni işleçle kullanabilirsiniz. yani

new LinkedList<String>() { 
    { 
    add("bar"); 
    } 
}; 

örnekleri yalnızca fabrika yöntemi createParallelGroup (...) ile oluşturulabilir Ancak ParallelGroup.

Paralel gruba geçici başvuru kullanmanız gerekecek: GroupLayout, iyi ama en underused düzen yöneticisi IMHO kullanmak için

ParallelGroup pGroup = gl 
     .createParallelGroup(GroupLayout.Alignment.CENTER); 
hGroup.addGroup(pGroup); 
for (JCheckBox c : listCustomiseJCB) { 
    pGroup.addComponent(c); 
} 
+1

Anlayışınız için teşekkür ederiz. Etkin çözüm ve gerekçeniz için +1. – Arvanem

İlgili konular