如何反复组件添加到一个Swing的GroupLayout的ParallelGroup?(How to

2019-06-23 12:12发布

有没有一种方法来遍历组件的列表,并将它们添加到在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循环中一个独立的组件添加到该组?

Answer 1:

我可以看到你正在试图做的和你的困惑是什么。 您只能使用匿名类的语法与新的运营商。 即

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

然而的ParallelGroup情况下,只能通过工厂方法的createParallelGroup(...)创建。

你必须使用一个临时参考并联组:

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


文章来源: How to iteratively add Components to a Swing GroupLayout ParallelGroup?