【问题标题】:How to embed a SWT TableViewer in a TabFolder?如何在 TabFolder 中嵌入 SWT TableViewer?
【发布时间】: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 中?

【问题讨论】:

    标签: java swt jface tableviewer tabbed-view


    【解决方案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");
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多