コントロールのすべての子供、孫、ひ孫などを無効にする簡単な方法はありますか?以下のコードを使用して、コンポジットのすべての子を無効にできます。孫、ひ孫などをループする必要がありますか?
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);
}