Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在swt中从父复合中删除子复合?_Java_Swt - Fatal编程技术网

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

Java 如何在swt中从父复合中删除子复合?,java,swt,Java,Swt,我想从父对象中删除一个子对象,而不删除该子对象。我试着看不见它,排除它,摧毁它。没有任何帮助。或者可以将新的子控件集添加到父控件吗?您只需调用child.dispose(),即可从父控件中删除任何控件(包括复合控件)。在处理控件后,它不能再使用。也就是说,除了isDisposed()之外的所有方法都将抛出SWTException 处理控件后,需要重新启动UI: if(! child.isDisposed()){ child.dispose(); } paramComposite.l

我想从父对象中删除一个子对象,而不删除该子对象。我试着看不见它,排除它,摧毁它。没有任何帮助。或者可以将新的子控件集添加到父控件吗?

您只需调用
child.dispose()
,即可从父控件中删除任何控件(包括复合控件)。在处理控件后,它不能再使用。也就是说,除了
isDisposed()
之外的所有方法都将抛出
SWTException

处理控件后,需要重新启动UI:

 if(! child.isDisposed()){
    child.dispose();
 }
 paramComposite.layout(true, true);
 existingControl.setParent(paramComposite );
 existingControl.setLayoutData(existingControlLayoutData);
 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);
或更改现有控件的父控件:

 if(! child.isDisposed()){
    child.dispose();
 }
 paramComposite.layout(true, true);
 existingControl.setParent(paramComposite );
 existingControl.setLayoutData(existingControlLayoutData);
 paramComposite.layout(true, true);

我只能在画好后再处理,对吗?但我希望这样的组合不应该进入UI本身。我可以在加载后调用的任何事件上调用dispose吗?有这样的事件吗?@GabrialDavid您可以随时处理控件,而不必等待它被绘制或其他任何操作。也许您应该向我们展示一个您遇到问题的代码示例。`@Override-protected void-createContent(Composite-paramComposite){super.createContent(paramComposite);final-Control[]hj=paramComposite.getChildren();hj[2].dispose();}`@GabrialDavid编辑您的问题以向我们显示代码(单击问题下方的
Edit
链接)。解释你的代码试图做什么。最好向我们展示一个@GabrialDavid,为什么要在展示复合材料之前处理它?为什么要首先创建它?