【问题标题】:Jface tableviewer - Scroll bars are not appearing when the window is being resizedJface tableviewer - 调整窗口大小时不出现滚动条
【发布时间】:2015-12-16 06:04:18
【问题描述】:

我在我的 Eclipse RCP 应用程序中使用带有 tablecolumnlayout(因为它是父复合)的 jface tableviewer,如下所示 -

    Composite composite = new Composite(parent, SWT.NONE);
    GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite);
    GridDataFactory.swtDefaults().grab(true, true).applyTo(composite);

    // Table Composite
    Composite tblComposite = new Composite(composite, SWT.NONE);
    GridLayoutFactory.fillDefaults().numColumns(2).applyTo(tblComposite);
    GridDataFactory.swtDefaults().grab(true, true).hint(500, 180).applyTo(tblComposite);

    // Table Column Layout
    TableColumnLayout tableColumnLayout = new TableColumnLayout();
    tblComposite.setLayout(tableColumnLayout);

    tableViewer =
        new TableViewer(tblComposite, SWT.BORDER | SWT.FULL_SELECTION | 
                        SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.RESIZE);

    Table table = tableViewer.getTable();
    table.setLinesVisible(true);
    table.setHeaderVisible(true);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(table);

    // Column 1
    TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
    column.getColumn().setText("Source");
    tableColumnLayout.setColumnData(column.getColumn(), new ColumnWeightData(50, true));

    // Column 2
    TableViewerColumn column2 = new TableViewerColumn(tableViewer, SWT.NONE);
    column2.getColumn().setText("Target");
    tableColumnLayout.setColumnData(column2.getColumn(), new ColumnWeightData(50, true));

    tableViewer.setUseHashlookup(true);
    tableViewer.setContentProvider(new ArrayContentProvider());
    tableViewer.setLabelProvider(new CustomLabelProvider());
    tableViewer.setSorter(new CustomViewSorter());

我面临的问题是,当我调整窗口大小(减小窗口大小)时,我看不到表格查看器的垂直和水平滚动条,即使看不到表格的行也是如此调整大小时(缩小大小直到表格中的某些行被隐藏),滚动条根本不出现,但我们通常希望它们出现正确?

我使用的 GridData 逻辑有什么问题吗?请帮助我摆脱困境。

【问题讨论】:

  • 我看不出有什么问题,Minimal, Complete, and Verifiable example 可能会有所帮助。
  • 我现在将编辑我的问题并添加更完整的代码,但我不太确定问题出在代码中。
  • 我已经添加了一个更完整的代码,我感觉GridData、GridLayout和TableColumnLayout的组合有问题,你能指导我正确的路径吗?我也尝试将这种样式常量 SWT.RESIZE 添加到 tableViewer,但是在调整窗口大小时我仍然没有得到滚动条。
  • 我仍在尝试各种组合来解决我所面临的问题,但直到现在都是徒劳的。代码对我来说似乎是正确的,但我不明白代码中是否存在小故障这就是在调整窗口大小时不允许操作系统显示滚动条。
  • Table/TableViewer 不支持 SWT.RESIZE 标志,不要指定不受支持的标志,它们可能会导致问题。我们真的需要一些可以运行和测试的东西。这是一个对话框吗?

标签: eclipse swt eclipse-rcp jface tableviewer


【解决方案1】:

删除 SWT.FULL_SELECTION。它不适用于 SWT.V_SCROLL | SWT.H_SCROLL。

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2016-05-24
    • 2020-06-09
    • 2013-07-15
    相关资源
    最近更新 更多