Java 如何处理复合对象的所有子对象?
我有一个Java 如何处理复合对象的所有子对象?,java,swt,dispose,composite,Java,Swt,Dispose,Composite,我有一个 Composite descComp 里面有些东西。。。基本上,它是一个表单的容器,由多个标签、组合和按钮组成,所有标签、组合和按钮排成一行。 我的表单不是有限的,我有一个按钮,可以为额外的输入添加一行。然而,为了实现这一目标,我必须处理掉我的孩子们 private void populateConstantMain(ContentData tariffConstantsOfType, Composite descComp,GridLayout descCompLayout, Boo
Composite descComp
里面有些东西。。。基本上,它是一个表单的容器,由多个标签、组合和按钮组成,所有标签、组合和按钮排成一行。
我的表单不是有限的,我有一个按钮,可以为额外的输入添加一行。然而,为了实现这一目标,我必须处理掉我的孩子们
private void populateConstantMain(ContentData tariffConstantsOfType, Composite descComp,GridLayout descCompLayout, Boolean resize) {
int arraySize;
if (resize == false) {
arraySize = tariffConstantsOfType.getQueryRowCount();
} else {
for (int i = 0 ; i < descComp.getChildren().length; i++) {
System.out.println("Disposing: " + i + " " + descComp.getChildren()[i].toString());
//descComp.getChildren()[i].setEnabled(false);
descComp.getChildren()[i].dispose();
}
arraySize = tariffConstantsOfType.getQueryRowCount() + 1;
}
......
}
不起作用,这意味着它不会处理所有子项,这会导致插入新子项时出错,从而破坏布局:/n有趣的是
descComp.getChildren()[i].setEnabled(false);
当我取消注释时,对所有孩子都有效 我有一种预感,在复合上调用getChildren()只会在调用它时返回未处理的子对象。所以调用
descComp.getChildren()[i].dispose()随着索引的增加,但数组的大小在减小,代码>会变得一团糟。你为什么不试试:
for (Control control : descComp.getChildren()) {
control.dispose();
}
这样,在开始处理组合中的每个子对象之前,您可以获得该子对象的静态视图
我还将代码切换为对每种语法使用更好的J5。如果卡在J1.4上,则不幸的是,您需要坚持(;;)
循环:
Control[] children = descComp.getChildren();
for (int i = 0 ; i < children.length; i++) {
children[i].dispose();
}
Control[]children=descComp.getChildren();
for(int i=0;i
我有一种预感,在调用组合时,对组合调用getChildren()只返回未处理的子对象。所以调用descComp.getChildren()[i].dispose()随着索引的增加,但数组的大小在减小,代码>会变得一团糟。你为什么不试试:
for (Control control : descComp.getChildren()) {
control.dispose();
}
这样,在开始处理组合中的每个子对象之前,您可以获得该子对象的静态视图
我还将代码切换为对每种语法使用更好的J5。如果卡在J1.4上,则不幸的是,您需要坚持(;;)
循环:
Control[] children = descComp.getChildren();
for (int i = 0 ; i < children.length; i++) {
children[i].dispose();
}
Control[]children=descComp.getChildren();
for(int i=0;i
在处理子对象(或数组中的任何对象)时,我使用for下一个循环,但从头到尾进行,而不是从头到尾。(并获取循环或其更改之前的长度。)
否则,您将删除每一个循环。在处理子循环(或数组中的任何内容)时,我使用for next循环,但从头到尾进行,而不是从头到尾。(并获取循环或其更改之前的长度。)
否则,您将删除所有其他按钮。伙计,我仍然会得到运行时异常:D在我的情况下,我正在重置/重新填充组合中的单选按钮
。知道吗?@campa抱歉,不知道,没有足够的细节。你需要问一个单独的问题。伙计,我还是得到了运行时异常:在我的情况下,我正在重置/重新填充组合中的单选按钮。知道吗?@campa抱歉,不知道,没有足够的细节。你需要问一个单独的问题。