繁体   English   中英

我该如何倾听儿童的能见度变化?

[英]How do I listen for children visibility change?

我想在控件的内部布局更改时调整其大小。 该更改是由ExpandableComposite引起的,该控件可切换其子级的可见性。

有没有一种方法可以递归地挂接层次结构中的每个孩子并监听其可见性更改?

如果在附加最后一个孩子之后应用以下作品:

IExpansionListener listener = new IExpansionListener() {
    public void expansionStateChanging(ExpansionEvent e) {
    }
    public void expansionStateChanged(ExpansionEvent e) {
        Point min = compositeContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT);
        compositeContainer.setSize(min);
    }
};
void recursivelyAddListener(Control control, IExpansionListener listener) {
    if (control instanceof ExpandableComposite) {
        ((ExpandableComposite) control).addExpansionListener(listener);
    }
    if (control instanceof Composite) {
        for (Control child : ((Composite) control).getChildren()) {
            recursivelyAddListener(child, listener);
        }
    }
}

在以后的阶段如何支持孩子的增加?

SWT中的这种更改没有直接支持。 我也会尝试封装您的setVisible(boolean)调用和调用侦听器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM