У нас есть инструмент, который имеет GUI, который содержит несколько Sections. В этих разделах мы имеем 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
- это композит родителя. Родитель родительского элемента является самим Сером, родителем раздела является наш вид. Это не только выглядит глупо, но и проблематично, когда мы хотим изменить наш взгляд, поскольку родительский элемент родителя ... может не быть правильным родителем.
Каков правильный способ разметки нашего представления? Как заставить пользовательский интерфейс рисовать содержимое нашего ExpandableComposite?
Вы пробовали использовать 'пакет();' вместо 'макета();'? Если вы используете org.eclipse.forms.ui.Form, вы также можете попробовать 'form.reflow (true);' вместо 'layout();' –
@ jens-na: я не использую форму, это просто композит. Кроме того, pack() здесь не помогает. – looper
Контент, который должен быть расширен, должен быть клиентом расширяемого композита. Например: 'extendedConfiguration.setClient (contentComposite);'. У вас что-то подобное в коде? –