2013-05-03 181 views
2

我们有一个工具,其中包含多个Sections的GUI。在这些部分中,我们有Expandable Composites,这些默认情况下不会扩展。当我们试图扩大这些复合材料,该+成为-,但它保持关闭:
Expandable Composite stays closed布置父母的父母

为了解决这个问题,我想补充一个ExpansionListener:

ExpandableComposite extendedConfiguration = getToolkit().createExpandableComposite(parent, TREE_NODE); 
extendedConfiguration.setLayoutData(new GridData(FILL, CENTER, true, false, 2, 1)); 
extendedConfiguration.setText("Erweiterte Einstellungen"); 
extendedConfiguration.setExpanded(false); 
extendedConfiguration.addExpansionListener(new ExpansionAdapter() { 
    @Override 
    public void expansionStateChanged(ExpansionEvent e) { 
     parent.getParent().getParent().layout(); 
    } 
}); 

使用此肮脏的代码,它的作品,parent是父母的组合。父母的父母是分科本身,分科的父母是我们的观点。它不仅看起来很愚蠢,而且当我们想改变我们的观点时也是有问题的,因为父母的父母......可能不是正确的父母。

再次布置视图的正确方法是什么?我如何强制UI来绘制ExpandableComposite的内容?

+0

您是否尝试过使用'包();',而不是'布局();'?如果你使用org.eclipse.forms.ui.Form,你也可以尝试'form.reflow(true);'而不是'layout();' – 2013-05-23 08:24:50

+0

@ jens-na:我没有使用表单,它只是一个综合。另外,pack()在这里没有帮助。 – looper 2013-05-23 08:51:13

+0

应该扩展的内容应该是可扩展组合的客户端。例如:'extendedConfiguration.setClient(contentComposite);'。你的代码中有这样的东西吗? – 2013-05-23 11:00:50

回答

0

我觉得只是射击调整事件应该做的伎俩,你

parent.getParent().layout(true); 
parent.getParent().notifyListeners(SWT.Resize, null); 
+0

对不起,但那不起作用:(。什么都没有发生。 – looper 2013-05-06 06:36:27

0

第一:尝试无效的复合材料部件。