Начальная вертикальная позиция прокрутки 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); 

После повторного открытия мастера я увидел, что выбранный элемент является последним, который виден внизу таблицы. Таким образом, кажется, что это является причиной необычного начального вертикального положения в таблице.

Когда я удаляю code table.setSelection(0); из POS 1 и добавить его в POS 2 происходит нечто странное. Первый элемент в таблице выбран, как я ожидал, но я все еще наблюдаю ту же начальную вертикальную прокрутку.

Другими словами, первый элемент таблицы выбран правильно, но виден только частично.

Кто-нибудь знает, что здесь происходит? В качестве альтернативы есть какой-то метод, который я пропустил, который возвращает представление в начало таблицы?

Спасибо

0 ответов

Другие вопросы по тегам