如何在 Swing 中递归禁用我的组件?

问题描述 投票:0回答:2

如何递归禁用 JPanel 中的所有组件?

java swing recursion jpanel jcomponent
2个回答
7
投票
void setEnabled(Component component, boolean enabled) {
    component.setEnabled(enabled);
    if (component instanceof Container) {
        for (Component child : ((Container) component).getComponents()) {
            setEnabled(child, enabled);
        }
    }
}

请注意,每个组件之前的启用/禁用状态将会丢失,除非您在其他地方跟踪它。


0
投票

接受的答案适用于组件和一级子组件。 对于无限递归解决方案,请使用以下内容:

private void setEnabledRecursive(boolean enabled, Component... components) {
   for (Component component : components) {
      component.setEnabled(enabled);
      if (component instanceof Container) {
          setEnabledRecursive(enabled, component);
      }
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.