如何禁用儿童,孙子女......控制SWT?

时间:2012-04-18 13:21:04

标签: java swt

禁用Control的所有孩子,孙子,曾孙等等的简单方法是什么?使用下面的代码我可以禁用所有复合子项。需要循环孙子,曾孙等等吗?

for(Control c: composite.getChildren()) {
    c.setEnabled(false);
}

1 个答案:

答案 0 :(得分:4)

您必须设置每个启用/禁用。您可以使用简单的静态辅助方法:

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);
}