2
是否禁止所有子女,孙子女,曾孙等等的简单方法Control?使用下面的代码我可以禁用所有合成儿童。需要循环孙辈,孙辈等?如何禁用SWT中的孩子,孙子......控制权?
for(Control c: composite.getChildren()) {
c.setEnabled(false);
}
是否禁止所有子女,孙子女,曾孙等等的简单方法Control?使用下面的代码我可以禁用所有合成儿童。需要循环孙辈,孙辈等?如何禁用SWT中的孩子,孙子......控制权?
for(Control c: composite.getChildren()) {
c.setEnabled(false);
}
您必须设置每个启用/禁用。你可以有一个简单的静态辅助方法:
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);
}
我认为这是一个更复杂的解决方案,但由于;) – marioosh 2012-04-19 06:09:20
有问题,此解决方案时,它的时间来重新启用的东西。 'setEnabledRecursive'将启用所有内容,但可能有一些控件是禁用的,并且应该保持禁用状态。我能想到的唯一解决方案是用'Widget.setDate'存储旧的启用状态,并检查启用时的状态。 – Lii 2016-10-25 20:46:44