我是java的新手,我在窗口上有一些复选框和一个按钮,当我点击此按钮选择窗口中的所有复选框时,我想要。
在C#中我使用了这个:
foreach (Control c in this.Controls) {
if ((c) is CheckBox) {
c.Checked = true;
}
}
如何在Java中执行此操作?
这是我试过的代码
for (Component c : this.getComponents()) {
if(c instanceof JCheckBox)
c.setSelected(true);
}
答案 0 :(得分:1)
最简单的方法是简单地将所有复选框都放在一个集合中(例如List<JCheckBox>
),然后迭代列表:
private List<JCheckBox> checkboxesToCheckWhenButtonIsPressed = new ArrayList<JCheckBox>();
public MyPanel() {
// ...
// create the checkboxes, and fill the list of checkboxes
// create the button
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (JCheckBox checkBox : checkboxesToCheckWhenButtonIsPressed) {
checkbox.setSelected(true);
}
}
}
}
答案 1 :(得分:0)
您尝试过的代码无法编译,因为它需要进行JCheckBox
强制转换,以便setSelected
方法可用。循环也不会到达任何嵌套容器。为实现此目的,您可以使用递归方法进行for
循环调用,首先传递ContentPane
的{{1}}:
JFrame