JFace TableViewer初始垂直滚动位置

时间:2015-01-14 16:19:51

标签: jface tableviewer

我在一个带有单个排序列的向导页面中设置了一个JFace CheckboxTableViewer。表中有足够的条目,因此需要垂直滚动条。

当我打开向导时,表中第一个元素的大部分已经滚动到了以外。 我只能看到第一个表元素的底部。 第二个表元素是第一个完全可见的元素。

 private void createCheckboxTable(Composite container) {
    Composite tableContainer = new Composite(container, SWT.NONE);
    TableColumnLayout tableColumnLayout = new TableColumnLayout();
    tableContainer.setLayout(tableColumnLayout);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(tableContainer);

    CheckboxTableViewer viewer = CheckboxTableViewer.newCheckList(tableContainer, SWT.BORDER | SWT.FULL_SELECTION
            | SWT.MULTI);

    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    viewer.setContentProvider(listContentProvider);

    Table table = viewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);// POS 1

    TableViewerColumn tableViewerColumn = new TableViewerColumn(viewer, SWT.LEFT);
    TableColumn column = tableViewerColumn.getColumn();
    tableColumnLayout.setColumnData(column, new ColumnWeightData(1, ColumnWeightData.MINIMUM_WIDTH, false));
    column.setText("Column");
    tableViewerColumn.setLabelProvider(new DependencyInfoFileNameColumnLabelProvider());

    TableSortConfigurator.newConfigurator(viewer, new Action() {
        @Override
        public void run() {
            viewer.refresh();
        }
    }).add(column, new DependencyInfoNameComparator()).initialize(column, SWT.UP).configure(); //POS 2

}

作为测试,在排序发生之前,我在上面的POS 1输入了以下行:

table.setSelection(0); 

再次打开向导后,我看到所选元素是表格底部可见的最后一个元素。所以看起来这就是表中不寻常的初始垂直位置的原因。

当我从POS 1中删除code table.setSelection(0);并将其添加到POS 2时会发生奇怪的事情。表格中的第一个元素是按照我的预期选择的,但我仍然观察到相同的初始垂直滚动。

换句话说,正确选择了表格的第一个元素,但只是部分可见。

有谁知道这里发生了什么?或者有一些我错过的方法将视图返回到表的顶部?

由于

0 个答案:

没有答案