Jface tableviewer - 调整窗口大小时不显示滚动条

时间:2015-12-16 06:04:18

标签: eclipse swt eclipse-rcp jface tableviewer

我在我的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逻辑有什么问题吗?请帮我脱掉这里。

1 个答案:

答案 0 :(得分:0)

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