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

时间:2014-08-22 06:29:56

标签: java layout swt visibility

我想在更改内部布局时调整控件的大小。这一变化是由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);
        }
    }
}

如何在以后的阶段支持加入儿童?

1 个答案:

答案 0 :(得分:0)

SWT没有直接支持这种变化。我也尝试封装你的setVisible(boolean)来电并调用听众。