2012-04-18 67 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