2012-04-18 66 views

回答

3

您必須設置每個啓用/禁用。你可以有一個簡單的靜態輔助方法:

public static void setEnabledRecursive(final Composite composite, final boolean enabled) 
{ 
    Check.notNull(composite, "composite"); //$NON-NLS-1$ 

    Control[] children = composite.getChildren(); 

    for (int i = 0; i < children.length; i++) 
    { 
     if (children[i] instanceof Composite) 
     { 
      setEnabledRecursive((Composite) children[i], enabled); 
     } 
     else 
     { 
      children[i].setEnabled(enabled); 
     } 
    } 

    composite.setEnabled(enabled); 
} 
+0

我認爲這是一個更復雜的解決方案,但由於;) – marioosh 2012-04-19 06:09:20

+0

有問題,此解決方案時,它的時間來重新啓用的東西。 'setEnabledRecursive'將啓用所有內容,但可能有一些控件是禁用的,並且應該保持禁用狀態。我能想到的唯一解決方案是用'Widget.setDate'存儲舊的啓用狀態,並檢查啓用時的狀態。 – Lii 2016-10-25 20:46:44