2012-08-03 17 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

相关问题