禁用Control的所有子、孙、曾孙等的简单方法是什么?使用下面的代码,我可以禁用复合上的所有孩子。需要循环孙子,曾孙等?
for(Control c: composite.getChildren()) {
c.setEnabled(false);
}
您必须将它们中的每一个设置为启用/禁用。你可以有一个简单的静态辅助方法:
public static void setEnabledRecursive(Composite composite, boolean enabled) {
Check.notNull(composite, "composite"); //$NON-NLS-1$
for (Control control : composite.getChildren()) {
if (control instanceof Composite) {
setEnabledRecursive((Composite) control, enabled);
} else {
control.setEnabled(enabled);
}
}
composite.setEnabled(enabled);
}