我正在尝试嵌入 JFace 表格浏览器 在 SWT 中 选项卡文件夹, ,但是当我这样做时,该表不会显示。我的当前(工作代码) 吉特待办事项 代码看起来像(参见 这个 Git 存储库):

    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);

后者在哪里 Git待办事项树 扩展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 中?

有帮助吗?

解决方案

如果您将 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");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top