2013-05-03 226 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

第一:嘗試無效的複合材料部件。