2010-03-21 5 views
3

탭이있는 창에 스크롤 영역을 추가하려고합니다. 지금까지 나는 쉘에 CTabFolder를 가지고있다. 5 CTabItems 그것에 추가 한 모든 예상대로 작동합니다.SWT : 탭 내의 스크롤 가능한 영역

내 CTabItem 중 하나에서 내용이 너무 커서 스크롤 할 수 있기를 원합니다. 내용은 다양한 위젯이 포함 된 그룹 모음입니다. 그래서 CTabFolder 같이 생성

는 다음과

CTabFolder tabs = new CTabFolder(shell, SWT.BORDER); 
tabs.setSimple(false); 
tabs.setUnselectedImageVisible(false); 
tabs.setUnselectedCloseVisible(false); 
tabs.setMinimizeVisible(false); 
tabs.setMaximizeVisible(false); 

FormData tabsLayoutData = new FormData(); 
tabsLayoutData.top = new FormAttachment(0, 5); 
tabsLayoutData.left = new FormAttachment(0, 5); 
tabsLayoutData.bottom = new FormAttachment(92, 0); 
tabsLayoutData.right = new FormAttachment(100, -5); 
tabs.setLayoutData(tabsLayoutData); 

을이어서 CTabItem :

이어서
CTabItem tab = new CTabItem(tabs, SWT.NONE); 
tab.setText("Role"); 

내용 :

복합 tabArea = 새로운 합성 (탭 SWT.V_SCROLL) ; tabArea.setLayout (새 FormLayout()); tab.setControl (tabArea);

그래서 탭에 포함 된 그룹은 tabArea를 부모로하여 생성되며 모든 것이 예상대로 나타납니다. 문제는 수직 스크롤 막대가 항상 존재하지만 아무 것도하지 않는 것입니다. 내용은 tabArea 합성의 맨 아래에서 잘립니다.

스크롤링이 제대로 작동하려면 필요한 다른 것이 있습니까?

답변

4

ScrolledComposite을 사용해야합니다.

ScrolledComposite scroller = new ScrolledComposite(tabs, SWT.BORDER | SWT.V_SCROLL); 

Composite tabArea = new Composite(scroller, SWT.NONE); 
scroller.setContent(tabArea); 

// create some controls in TabArea and assign a layout to TabArea 

scroller.setExpandVertical(true); 
scroller.setExpandHorizontal(true); 
scroller.setMinSize(tabArea.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

tab.setControl(scroller); 
:

여기

가 현재 상황에서 작동합니다 코드입니다 (아래로 스크롤 JavaDoc & snippets에 대한 링크를 찾을 수 있습니다)

관련 문제