如何在 TabFolder 中嵌入 SWT TableViewer?
Posted
技术标签:
【中文标题】如何在 TabFolder 中嵌入 SWT TableViewer?【英文标题】:How to embed a SWT TableViewer in a TabFolder? 【发布时间】:2010-03-07 20:51:46 【问题描述】:我正在尝试将 JFace TableViewer 嵌入到 SWT 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 中?
【问题讨论】:
【参考方案1】:如果您将 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");
【讨论】:
查看提交:github.com/egonw/gtd/commit/…以上是关于如何在 TabFolder 中嵌入 SWT TableViewer?的主要内容,如果未能解决你的问题,请参考以下文章