javaswingrecursionjpaneljcomponent

How do I recursively disable my components in Swing?


How do I recursively disable all of my components in a JPanel?


Solution

  • void setEnabled(Component component, boolean enabled) {
        component.setEnabled(enabled);
        if (component instanceof Container) {
            for (Component child : ((Container) component).getComponents()) {
                setEnabled(child, enabled);
            }
        }
    }
    

    Be aware that the previous enabled/disabled state of each component will be lost, unless you keep track of it somewhere else.