2012-02-11 23 views

回答

2

这样做是递归获得面板的所有儿童和每个插件,扩展FocusWidget

+0

嗯...坏..好吧,谢谢 – MyTitle 2012-02-11 14:42:44

3

调用setEnabled(false)的唯一途径,我相信你”已经已经想通了,但如果其他人是好奇,这将启用或禁用所有嵌套FocusWidgets:

private void enableAllChildren(boolean enable, Widget widget) 
{ 
    if (widget instanceof HasWidgets) 
    { 
     Iterator<Widget> iter = ((HasWidgets)widget).iterator(); 
     while (iter.hasNext()) 
     { 
      Widget nextWidget = iter.next(); 
      enableAllChildren(enable, nextWidget); 
      if (nextWidget instanceof FocusWidget) 
      { 
       ((FocusWidget)nextWidget).setEnabled(enable); 
      } 
     } 
    } 
} 
+1

它足以投射到'HasEnabled'界面而不是'FocusWidget' – 2013-08-23 11:10:41

+0

我得到了“不相容的条件操作数类型Widget和HasWidgets”与您的代码。 – liftarn 2014-01-10 09:09:26

1

getWidget()复合类的方法是受保护的,内外部包复合因此你不能访问窗口小部件。因此,如果没有子类复合,你就无法获得Composite的子控件。