我正在尝试将所有复选框的值都设置为setSelected(false)
。这些复选框来自具有其他子面板的不同子面板。getComponents(panelName)
仅获取包含在其中的组件,而不获取子面板中的每个子面板/子面板...等等。
在上面allPermissionsJPanel
是父面板。settingsButtonPanel
而cardContainerPanel
作为第一级子面板,我想每一个JCheckBox
被设置为false。
我怎么做?我尝试使用,getComponents()
但是它没有从子面板的子面板返回所有复选框。
这是我的代码。
List<Component> allPermissionsCheckboxes =fm.getComponentsAsList(allPermissionsJPanel);
for(Component c: allPermissionsCheckboxes){
if(c instanceof JCheckBox){
((JCheckBox) c).setSelected(false);
}
}
我尝试检查与之相关的其他方法,getComponents()
但没有找到遍及子面板的每个子面板的方法,因此我可以检查它是否为instanceof
a JCheckBox
。有什么建议么?
您将需要将此方法实现为递归方法,该方法可遍历组件层次结构以查找复选框并执行setSelected(false)
。
该方法可能如下所示:
public void deselectAllCheckBoxes(Component panel) {
List<Component> allComponents = fm.getComponentsAsList(panel);
for (Component c : allComponents) { // Loop through all the components in this panel
if (c instanceof JCheckBox) { // if a component is a check box, uncheck it.
((JCheckBox) c).setSelected(false);
} else if (c instanceof JPanel) { // if a component is a panel, call this method
deselectAllCheckBoxes(c); // recursively.
}
}
那你要做的就是打电话 deselectAllCheckBoxes(allPermissionsPanel);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句