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?
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