2012-08-03 20 views
0
CTabItem tabItem1 = new CTabItem(newTabFolder, SWT.CLOSE); 
tabItem1.setText("Tab 1"); 
Label lab2 = new Label(newTabFolder, 0); 
lab2.setText("Hello World"); 
tabItem1.setControl(table); 
tabItem1.setControl(lab2); 

我想有一個CTabItem其中有一張桌子和一些標籤和文本框如何在一個CTabItem中添加多個項目?

但產生的問題是,任何物品/部件是由使用setControl(Control control)功能的加入。我無法通過兩個以上的控制。上面的代碼首先添加一個表格,然後將其寫入標籤,因此一次只顯示一個項目。

我一次想兩件事。

我也想看看,如果我想補充的東西控制的對象,那麼控制傳遞給setControl()功能,但我無法找到我可以添加項目/部件的任何功能來控制 請告訴我如何去做這個。

final Composite compositeInTab = new Composite(newTabFolder, SWT.NONE); 
     compositeInTab.setLayout(new FillLayout()); 
     table = new Table(compositeInTab, SWT.V_SCROLL); 

     btn1.addMouseListener(new MouseAdapter() 
     { 
      public void mouseDown(MouseEvent e) 
      { 
       /*JUST CREATING A TABLE AND MANAGING IT*/ 
       String[] titles = {"System Code","Domain Name","Organizational Unit","Organization Name"}; 
       for(int i=0; i<titles.length; i++) 
       { 
        TableColumn column = new TableColumn(table, SWT.CENTER, i); 
        column.setText(titles[i]); 
        column.setWidth(150); 
        column.setMoveable(true); 
        column.setResizable(true); 
       } 
       for(int i=0; i<50; i++) 
       { 
        TableItem item = new TableItem(table, 0); 
        item.setText(0, ""+i); 
        item.setText(1, ""+i); 
        item.setText(2, ""+i); 
        item.setText(3, ""+i); 
       } 
       for (int i = 0; i < titles.length; i++) 
       { 
        table.getColumn(i).pack(); 
       } 
       table.setHeaderVisible(true); 
       table.setSize(table.computeSize(SWT.DEFAULT, 200)); 
       table.setLinesVisible(true); 
       /*CREATING OF TABLE COMPLETE*/ 

       compositeForTabFolder.setLayout(new GridLayout()); 
       compositeForTabFolder.setBounds(280, 0, 500, 450); 
       newTabFolder.setUnselectedCloseVisible(false); 

       CTabItem tabItem1 = new CTabItem(newTabFolder, SWT.CLOSE); 
       tabItem1.setText("Tab 1"); 
       Label lab2 = new Label(compositeInTab, 0); 
       lab2.setText("Hello World"); 
       Label lab3 = new Label(compositeInTab, 0); 
       lab3.setText("Bye Bye World"); 
       tabItem1.setControl(compositeInTab); 

       newTabFolder.setBounds(0, 0, 500, 300); 
      } 
     }); 

Image

+0

我想你的代碼,它爲我工作。試試這個小例子:http://pastebin.com/DyvxtV07 – Baz 2012-08-03 08:12:18

回答

0

你可以使用一個Composite,然後添加你想要的一切,這個Composite,之後使用setControl(composite)

這樣,你將只能通過setControl()要添加一個組件,但是這個小工具可以有多個孩子。

有一個很好的例子here

下面是從該網站(略有修改)示例代碼:

public static void main(String[] args) { 
    Display display = new Display(); 
    final Shell shell = new Shell(display); 
    final TabFolder tabFolder = new TabFolder(shell, SWT.BORDER); 
    for (int i = 0; i < 6; i++) { 
     TabItem item = new TabItem(tabFolder, SWT.NONE); 
     item.setText("TabItem " + i); 
     item.setToolTipText("This is my tab" + i); 

     Composite composite = new Composite(tabFolder, SWT.NONE); 
     composite.setLayout(new FillLayout()); 
     new Button(composite, SWT.PUSH).setText("Button"); 
     new Text(composite, SWT.BORDER).setText("TextField"); 
     new Label(composite, SWT.NONE).setText("Label"); 

     Table table = new Table(composite, SWT.NONE); 
     table.setHeaderVisible(true); 

     new TableItem(table, SWT.NONE).setText("TableItem"); 

     item.setControl(composite); 

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

你的建議,效果很好,但對標籤和按鈕只有 提示錯誤,當桌子在複合 – 2012-08-03 07:32:53

+0

@AsadUllah加入它的工作對我來說任何'Control'。只是用'Text'來試試這就是你想要的。 – Baz 2012-08-03 07:34:42

+0

先生,我想要一個表格,標籤和文本在那個tabitem – 2012-08-03 07:36:33

相關問題