我正在尝试在SWT TableViewer中嵌入JFace TabFolder,但是当我这样做时,表格不显示。我的GitToDo代码中的当前(工作代码)看起来像(请参阅this Git repos):
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);
因此,当我从Shell构建TableViewer扩展GitToDoTree时,它可以工作,但是一旦我尝试从TabFolder构建它或者(也尝试过)一个Composite,就不会再显示任何内容了。
如何让我的TableViewer显示在TabFolder中?
答案 0 :(得分: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");