如何使用 getComponent() 设置子组件的复选框 setSelected()
How to set the checkbox setSelected() of child components using getComponent()
我正在尝试将所有复选框的值设置为 setSelected(false)
。这些复选框来自具有其他子面板的不同子面板。 getComponents(panelName)
只获取其中包含的组件,但不是子面板的每个 subpanel/child 面板...等等。
在上面,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
和 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);
我正在尝试将所有复选框的值设置为 setSelected(false)
。这些复选框来自具有其他子面板的不同子面板。 getComponents(panelName)
只获取其中包含的组件,但不是子面板的每个 subpanel/child 面板...等等。
在上面,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
和 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);