2010-03-07 89 views
1

我試圖在SWT TabFolder中嵌入JFace TableViewer,但是當我這樣做時,表格不顯示。在我GitToDo代碼中的電流(工作代碼)的樣子(見this Git repos):如何在TabFolder中嵌入SWT TableViewer?

final Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setText("Git ToDo"); 
    FillLayout layout = new FillLayout(); 
    shell.setLayout(layout); 

    final GitToDoTree tableViewer = new GitToDoTree(shell); 

其中後者GitToDoTree延伸的TableViewer,這種構造:

super(parent, SWT.SINGLE | SWT.FULL_SELECTION | SWT.FILL); 
    this.shell = parent; 
    table = this.getTable(); 
    table.setHeaderVisible(true); 
    table.setLinesVisible(true); 

所以,當我構建TableViewer從Shell擴展GitToDoTree它的工作原理,但只要我嘗試從TabFolder或(嘗試這樣做)複合,它什​​麼也沒有顯示出來。

如何讓我的TableViewer顯示在TabFolder中?

回答

5

如果您的TableViewer類在您將其添加到Composite時未顯示,那麼我可能會說您有可能沒有爲嵌套的Composite設置佈局。

final Display display = new Display(); 
final Shell shell = new Shell(display); 
shell.setText("Git ToDo"); 
FillLayout layout = new FillLayout(); 
shell.setLayout(layout); 

Composite composite = new Composite(shell, SWT.NONE); 
composite.setLayout(new FillLayout()); // Possible missing layout? 

final GitToDoTree tableViewer = new GitToDoTree(composite); 

而且作爲TabFolder中,可能是您沒有設置客戶端控件的TabItem上

TabFolder tabFolder = new TabFolder(shell, SWT.NONE); 
TabItem item = new TabItem(tabFolder, SWT.NONE); 
item.setText("Table"); 

GitToDoTree viewer = new GitToDoTree(tabFolder); 
item.setControl(viewer.getTable()); // Possible setControl call? 

TabItem item2= new TabItem(tabFolder, SWT.NONE); 
item2.setText("Empty"); 
+0

是啊,這工作!非常感謝Thanx! – 2010-04-07 13:22:40

+0

參見提交:http://github.com/egonw/gtd/commit/4d198e5cbe796ea8430f42eb397d366064d1b1e5 – 2010-04-07 13:24:40