我們有一個工具,其中包含多個Sections的GUI。在這些部分中,我們有Expandable Composites,這些默認情況下不會擴展。當我們試圖擴大這些複合材料,該+成爲-,但它保持關閉:
佈置父母的父母
爲了解決這個問題,我想補充一個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的內容?
您是否嘗試過使用'包();',而不是'佈局();'?如果你使用org.eclipse.forms.ui.Form,你也可以嘗試'form.reflow(true);'而不是'layout();' – 2013-05-23 08:24:50
@ jens-na:我沒有使用表單,它只是一個綜合。另外,pack()在這裏沒有幫助。 – looper 2013-05-23 08:51:13
應該擴展的內容應該是可擴展組合的客戶端。例如:'extendedConfiguration.setClient(contentComposite);'。你的代碼中有這樣的東西嗎? – 2013-05-23 11:00:50