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