How to iteratively add Components to a Swing GroupLayout ParallelGroup?

♀尐吖头ヾ 提交于 2019-12-18 08:26:19

问题


Is there a way to iterate over a List of Components and add them to a ParallelGroup in Swing GroupLayout?

It seems difficult because there is no method to get hold of the ParallelGroup.

Here is the code generating a List of Components (in this case, 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));
    }

The List is working, but how can I iterate over the List to insert each JCheckbox into a GroupLayout's ParallelGroup? For example, the below code won't compile.

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

Alternatively, does anyone know of a way to get hold of a ParallelGroup so that I could iteratively add Components to that group in a standalone for loop?


回答1:


I can see what you're trying to do and your confusion. You can only use anonymous class syntax with the new operator. i.e

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

However ParallelGroup instances can only be created with the factory method createParallelGroup(...).

You'll have to use a temporary reference to the parallel group:

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


来源:https://stackoverflow.com/questions/10094825/how-to-iteratively-add-components-to-a-swing-grouplayout-parallelgroup

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!