2016-05-19 7 views
0

TabItem "item2"のscrollcompositeを設定する次のコードを試しています。しかし、スクロールバーを取得できませんでした。SWTの1つのTabItemに対してscrollcompositeを設定するには?

ここで私は次のコードを追加すると、tabItem2が空だった私は、私が唯一ITEM1

Display display = new Display(); 
final Shell shell = new Shell(display); 
final TabFolder tabFolder = new TabFolder(shell, SWT.BORDER); 
Rectangle clientArea = shell.getClientArea(); 
tabFolder.setLocation(clientArea.x, clientArea.y); 
// First Tab Item 
TabItem item = new TabItem(tabFolder, SWT.NONE); 
item.setText("TabItem " + 1); 
Composite comp = new Composite(tabFolder, SWT.NONE); 
GridLayout gl = new GridLayout(); 
GridData wgd = new GridData(GridData.FILL_BOTH); 
comp.setLayout(gl); 
comp.setLayoutData(wgd); 
Button button = new Button(comp, SWT.PUSH); 
button.setText("Page " + 1); 
Button button2 = new Button(comp, SWT.PUSH); 
button2.setText("Page " + 1); 
Button button3 = new Button(comp, SWT.PUSH); 
button3.setText("Page " + 1); 
Button button4 = new Button(comp, SWT.PUSH); 
button4.setText("Page " + 1); 
item.setControl(comp); 

ScrolledComposite sc = new ScrolledComposite(tabFolder, SWT.BORDER 
      | SWT.H_SCROLL | SWT.V_SCROLL); 

// second tab item 
TabItem item2 = new TabItem(tabFolder, SWT.NONE); 
item2.setText("TabItem " + 1); 
Composite comp2 = new Composite(tabFolder, SWT.NONE); 
GridLayout gl2 = new GridLayout(); 
GridData wgd2 = new GridData(GridData.FILL_BOTH); 
comp2.setLayout(gl2); 
comp2.setLayoutData(wgd2); 
Button buttonq = new Button(comp2, SWT.PUSH); 
buttonq.setText("Page " + 1); 
Button button2q = new Button(comp2, SWT.PUSH); 
button2q.setText("Page " + 1); 

sc.setContent(comp2); 
sc.setExpandHorizontal(true); 
sc.setExpandVertical(true); 
sc.setMinSize(comp2.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 
sc.setShowFocusedControl(true); 
item2.setControl(comp2); 

tabFolder.pack(); 
shell.pack(); 
shell.open(); 
while (!shell.isDisposed()) { 
    if (!display.readAndDispatch()) 
     display.sleep(); 
} 
display.dispose(); 

のためではないITEM2ためscrollcomposite /スクロールバーを設定する必要がある2つのTabItemを、作成した:

item2.setControl(comp2); 

これを解決するのを手伝ってください。

答えて

1

ここにいくつかあります。

最初にすべてのレイアウトを使用します。 tabFolder.setLocationは混乱の原因となりますが、代わりにFillLayoutを使用してください。

ので

shell.setLayout(new FillLayout()); 

セカンドと

Rectangle clientArea = shell.getClientArea(); 
tabFolder.setLocation(clientArea.x, clientArea.y); 

を置き換え、2番目のタブのためのCompositeScrolledCompositeによって所有されなければなりません。

だから、最後にScrolledCompositeは、2番目のタブのための制御可能なので、

item2.setControl(sc); 

item2.setControl(comp2); 

を変更する必要があります

Composite comp2 = new Composite(sc, SWT.NONE); 

Composite comp2 = new Composite(tabFolder, SWT.NONE); 

を変更

関連する問題