我想从其父级中删除一个孩子。我试图隐形它,排除它,摧毁它。没有任何帮助。或者是否可以将新的一组子项添加到父级?
您需要在释放控件后重新布局 UI:
if(! child.isDisposed()){
child.dispose();
}
paramComposite.layout(true, true);
如果在 paramComposite 中使用 GridLayout,则可以排除单元格:
if(child.getLayoutData() instanceof GridData){
((GridData)child.getLayoutData() ).exclude = true;
}
paramComposite.layout(true, true);
要添加新的子项:
Composite newChild = new Composite(paramComposite , SWT.NON)
paramComposite.layout(true, true);
或更改现有控件的父控件:
existingControl.setParent(paramComposite );
existingControl.setLayoutData(existingControlLayoutData);
paramComposite.layout(true, true);
只需调用 child.dispose()
即可从其父控件中删除任何控件(包括复合控件(。释放控件后,不能再使用它。即除isDisposed()
之外的所有方法都会抛出SWTException
。