当某个部分在swt中折叠或展开时,自动调用的方法有哪些?

时间:2014-10-01 09:28:49

标签: java swt collapse expand sections

折叠某个部分时,该部分的容器(父级)合成的大小会自动缩小,以便现在与折叠部分的大小相匹配。因此,当部分折叠时,我猜一些像layout()(似乎不是这种方法)的方法被称为默认(自动)该容器。我想完全知道这个方法。因为当我移除(处理)一个部分时,我希望发生同样的事情。当我处理那个部分时,我想减小容器复合材料的大小。

1 个答案:

答案 0 :(得分:2)

org.eclipse.ui.forms.widgets.SectionEclipse 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只是为了停止闪烁。