Какие методы автоматически вызываются при свертывании или развертывании раздела в SWT?
Когда раздел свернут, размер составного контейнера (родительского) этого раздела автоматически уменьшается, чтобы соответствовать размеру свернутого раздела. Поэтому я предполагаю, что такой метод, как layout() (кажется, это не этот метод), называется default (автоматически) для этого контейнера, когда раздел свернут. Я хочу точно знать этот метод. Потому что я хочу, чтобы произошло то же самое, когда я удалил (удалил) раздел. Я хочу уменьшить размер этого контейнерного композита при удалении этого раздела.
1 ответ
org.eclipse.ui.forms.widgets.Section
является частью Eclipse Forms API и может некорректно использоваться вне этого контекста.
Когда раздел развернут / свернут Section.reflow
называется, это по сути называет Composite.layout(true)
на каждом родительском Composite до первого экземпляра SharedScrolledComposite
(так что если вы не используете SharedScrolledComposite
это может не работать должным образом). Когда SharedScrolledComposite
найдено это вызывает SharedScrolledComposite.reflow(true)
,
Настоящий reflow
код:
protected void reflow() {
Composite c = this;
while (c != null) {
c.setRedraw(false);
c = c.getParent();
if (c instanceof SharedScrolledComposite || c instanceof Shell) {
break;
}
}
c = this;
while (c != null) {
c.layout(true);
c = c.getParent();
if (c instanceof SharedScrolledComposite) {
((SharedScrolledComposite) c).reflow(true);
break;
}
}
c = this;
while (c != null) {
c.setRedraw(true);
c = c.getParent();
if (c instanceof SharedScrolledComposite || c instanceof Shell) {
break;
}
}
}
Призывы к setRedraw
просто перестать мерцать.