如何迭代地将组件添加到Swing GroupLayout ParallelGroup?

有没有办法迭代组件列表并将它们添加到Swing GroupLayout中的ParallelGroup?

这似乎很难,因为没有方法可以获得ParallelGroup。

以下是生成组件列表的代码(在本例中为JCheckBoxes)。

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

列表正在工作,但我如何迭代List以将每个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循环中迭代地将组件添加到该组?

我可以看到你正在尝试做什么以及你的困惑。 您只能对new运算符使用匿名类语法。 即

 new LinkedList() { { add("bar"); } }; 

但是,只能使用工厂方法createParallelGroup(…)创建ParallelGroup实例。

您必须使用对并行组的临时引用:

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