折叠某个部分时,该部分的容器(父级)合成的大小会自动缩小,以便现在与折叠部分的大小相匹配。因此,当部分折叠时,我猜一些像layout()(似乎不是这种方法)的方法被称为默认(自动)该容器。我想完全知道这个方法。因为当我移除(处理)一个部分时,我希望发生同样的事情。当我处理那个部分时,我想减小容器复合材料的大小。
答案 0 :(得分:2)
org.eclipse.ui.forms.widgets.Section
是Eclipse Forms API的一部分,可能无法在该上下文之外正常使用。
当部分被展开/折叠时Section.reflow
被调用,这基本上会在每个父复合上调用Composite.layout(true)
直到SharedScrolledComposite
的第一个实例(所以如果你不这样做的话)使用SharedScrolledComposite
它可能无法正常工作)。找到SharedScrolledComposite
后,会调用SharedScrolledComposite.reflow(true)
。
实际的reflow
代码:
protected void reflow() {
Composite c = this;
while (c != null) {
c.setRedraw(false);
c = c.getParent();
if (c instanceof SharedScrolledComposite || c instanceof Shell) {
break;
}
}
c = this;
while (c != null) {
c.layout(true);
c = c.getParent();
if (c instanceof SharedScrolledComposite) {
((SharedScrolledComposite) c).reflow(true);
break;
}
}
c = this;
while (c != null) {
c.setRedraw(true);
c = c.getParent();
if (c instanceof SharedScrolledComposite || c instanceof Shell) {
break;
}
}
}
拨打setRedraw
只是为了停止闪烁。