2014-10-01 1 views
0

Когда раздел сложен, размер составного элемента контейнера (родителя) этого раздела автоматически уменьшается, чтобы теперь соответствовать размеру свернутого раздела. Поэтому я предполагаю, что какой-то метод, такой как layout() (кажется, что это не этот метод), называется по умолчанию (автоматически) для этого контейнера, когда раздел распадается. Я хочу точно знать этот метод. Потому что я хочу, чтобы это произошло, когда я удалил (удалил) раздел. Я хочу уменьшить размер этого составного контейнера, когда я разместил этот раздел.Какие методы автоматически вызывают, когда раздел сбрасывается или расширяется в swt?

+0

В каком разделе вы спрашиваете? 'org.eclipse.ui.forms.widgets.Section' возможно (что не является SWT)? –

+0

Да, это org.eclipse.ui.forms.widgets.Section. Я упомянул swt, поскольку я использовал swt в моем приложении. SWT - это то, что в основном используется для разработки интерфейса в моем плагине eclipse, который я сейчас разрабатываю. –

+0

Вы должны пометить плагины Eclipse с помощью [tag: eclipse-plugin], только приложение SWT - совсем другое. –

ответ

2

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 просто остановить мерцает.

Смежные вопросы