Как правильно выровнять текст в ячейке таблицы SWT? - PullRequest
3 голосов
/ 31 августа 2011

У меня есть таблица SWT, которая обернута JFace TableViewer, но эта проблема также относится к org.eclipse.swt.widgets.Table.

Когда я использую StyledCellLabelProvider, текст всегда выравнивается по левому краю, даже когда я использую

colA.getColumn().setAlignment(SWT.RIGHT);

Вот поставщик меток и настройки:

TableViewerColumn colA = new TableViewerColumn(measureTable, SWT.NONE);
colA.setLabelProvider(new StyledCellLabelProvider() {
    @Override
    public void update(ViewerCell cell) {
        ModelItem item = (ModelItem) cell.getElement();
        cell.setFont(FONT_REGISTRY.get(MY_SPECIAL_FONT));
        cell.setText(item.getText());
        super.update(cell);
    }
});

Любой способ обойти это было бы здорово. Например, для размещения виджета внутри таблицы и правильного выравнивания текста в виджете.

Платформа: Windows 7

1 Ответ

4 голосов
/ 31 августа 2011

Вы нашли ошибку в StyledCellLabelProvider. Это не произойдет с любым другим CellLabelProvider.

StyledCellLabelProvider использует "рисование владельца" для рисования клеток Table. Это означает, что содержимое ячейки не рисуется операционной системой. Он рисуется в событии SWT.PaintItem Таблицей «Владелец».

StyledCellLabelProvider не учитывает выравнивание TableColumn. Вы можете увидеть источник здесь , метод getTextLayoutForInfo(.) представляет интерес.

Обходным путем может быть копирование этого класса, исправление ошибки путем добавления

TableColumn col = ((Table)viewer.getControl()).getColumn(cell.getColumnIndex());
layout.setAlignment(col.getAlignment());

в методе getTextLayoutForInfo(.) (я не тестировал это исправление, но если оно не работает, вы должны получить представление и быть в состоянии заставить его работать)

Вы также должны добавить отчет об ошибке: Eclipse Bugzilla

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...