我有一个复合小部件,其中包含许多小部件(在HorizontalPanel
内)。如何禁用HorizontalPanel
内或此复合内的所有小部件?我在setEnabled()
或面板
Composite
方法
答案 0 :(得分:3)
我确定你已经弄明白了,但如果其他人好奇,这将启用或禁用所有嵌套的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 :(得分:2)
唯一的方法是递归获取面板的所有子项,并在每个小部件上调用setEnabled(false)
,扩展FocusWidget
答案 2 :(得分:1)