Следующий метод использует рекурсию для достижения этой цели. Передайте любой Container
, и этот метод вернет массив Component
всех неконтейнерных компонентов, расположенных в любом месте "внутри" Container
.
private Component[] getComponents(Component container) {
ArrayList<Component> list = null;
try {
list = new ArrayList<Component>(Arrays.asList(
((Container) container).getComponents()));
for (int index = 0; index < list.size(); index++) {
for (Component currentComponent : getComponents(list.get(index))) {
list.add(currentComponent);
}
}
} catch (ClassCastException e) {
list = new ArrayList<Component>();
}
return list.toArray(new Component[list.size()]);
}
}
Просто переберите элементы возвращаемого массива и отключите компоненты.
for(Component component : getComponents(container)) {
component.setEnabled(false);
}