如何在swt中从父组合中删除子组合?

时间:2018-01-08 12:26:12

标签: java swt

我想从父母那里删除一个孩子。我试图隐藏它,排除它,摧毁它。什么都没有帮助。或者可以将新的子集添加到父级吗?

2 个答案:

答案 0 :(得分:1)

您只需致电child.dispose()即可从其父级中移除任何控件(包括复合材料)。处理完控件后,不能再使用了。即除isDisposed()之外的所有方法都会抛出SWTException

答案 1 :(得分:1)

您需要在部署控件后重新布局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);