2014-10-01 10 views
0

섹션이 축소되면 해당 섹션의 컨테이너 (상위) 합성 크기가 자동으로 축소되어 접힌 섹션의 크기와 일치합니다. 그래서 나는 layout() (이 메소드가 아닌 것처럼 보임)과 같은 일부 메소드가 섹션이 축소되었을 때 해당 컨테이너에 대해 (자동으로) 디폴트라고 부름을 추측한다. 그 방법/s을 정확히 알고 싶습니다. 섹션을 삭제 (처분) 할 때도 같은 일이 발생하기를 원합니다. 해당 섹션을 배치 할 때 그 컨테이너 컴포지트의 크기를 줄이려고합니다.섹션이 축소되거나 swt에서 확장 될 때 자동으로 호출되는 메소드는 무엇입니까?

+0

'섹션'에 대해 묻고 있습니까? 'org.eclipse.ui.forms.widgets.Section' 아마도 (SWT가 아닌)? –

+0

예, org.eclipse.ui.forms.widgets.Section입니다. 내 응용 프로그램에서 swt를 사용함에 따라 swt에 대해서도 언급했습니다. SWT는 주로 현재 개발중인 Eclipse 플러그인에서 UI를 에딩하기 위해 주로 사용되었습니다. –

+0

[tag : eclipse-plugin]을 사용하여 Eclipse 플러그인에 태그를 지정해야합니다. SWT 전용 애플리케이션은 완전히 다른 것입니다. –

답변

2

org.eclipse.ui.forms.widgets.SectionEclipse Forms API의 일부이며 해당 컨텍스트 외부에서 올바르게 사용되지 않을 수 있습니다.

는 섹션이 확장되면 /이 본질적으로 SharedScrolledComposite의 첫 번째 인스턴스 (당신이 SharedScrolledComposite를 사용하지 않는 경우 때문에 제대로 작동하지 않을 수)까지 모든 부모 복합에 Composite.layout(true)를 호출 Section.reflow이라고합니다 붕괴. SharedScrolledComposite이 발견되면 SharedScrolledComposite.reflow(true)이 호출됩니다.

실제 reflow 코드 : setRedraw

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; 
     } 
    } 
} 

통화는 깜박 거림을 중지하는 단지입니다.