2012-04-10 57 views
5

有沒有辦法迭代組件列表並將它們添加到Swing GroupLayout中的ParallelGroup?如何迭代添加組件到Swing GroupLayout ParallelGroup?

看起來很困難,因爲沒有辦法去掌握ParallelGroup。

以下是生成組件列表的代碼(在本例中爲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)); 
    } 

名單是工作,但我怎麼能遍歷目錄到每個JCheckBox的插入到的GroupLayout的的ParallelGroup?例如,下面的代碼將不會編譯。

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

或者,沒有人知道的一種方式來獲得一個ParallelGroup的保持這樣我就可以反覆在for循環中一個獨立的組件添加到該組?

+3

+1。 – Adam 2012-04-10 19:21:05

+0

謝謝。我也喜歡GroupLayout,它非常有效! – Arvanem 2012-04-10 19:23:37

+1

有一個(不太靈活)的示例[這裏](http://stackoverflow.com/a/8504753/230513)。 – trashgod 2012-04-10 19:36:37

回答

6

我可以看到你想要做什麼和你的困惑。您只能對新操作符使用匿名類語法。即

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

但是,ParallelGroup實例只能使用工廠方法createParallelGroup(...)創建。

你必須使用一個臨時參考平行組:使用GroupLayout的,最好的,但最未充分利用的佈局管理器,恕我直言

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

謝謝你的理解。 +1爲有效的解決方案和你的推理。 – Arvanem 2012-04-10 19:19:58

相關問題