有没有一种方法可以遍历组件列表并将它们添加到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循环中迭代地将Components添加到该组中吗?
最佳答案
我可以看到您正在尝试做什么以及您的困惑。您只能对new运算符使用匿名类语法。 IE
new LinkedList<String>() {
{
add("bar");
}
};
但是,只能使用工厂方法createParallelGroup(...)创建ParallelGroup实例。
您必须使用对并行组的临时引用:
ParallelGroup pGroup = gl
.createParallelGroup(GroupLayout.Alignment.CENTER);
hGroup.addGroup(pGroup);
for (JCheckBox c : listCustomiseJCB) {
pGroup.addComponent(c);
}