Странное выравнивание и расположение в просмотрщике таблиц с изображением

Я использую TableViewer с двумя колоннами. Первый должен содержать текст, а второй изображение в зависимости от состояния объекта. Поставщик меток - это пользовательский поставщик, который расширяет LabelProvider и реализует ITableLayoutProvider,

Если изображение не отображается, макет правильный, и текст в первом столбце выравнивается по левому краю.правильный

Но когда отображается хотя бы одно изображение, текст в первом столбце выровнен где-то между правым и центральным - выглядит довольно некрасиво.

некорректный

Компоновка довольно проста:

availableDevicesList = new TableViewer(this, SWT.SINGLE | SWT.BORDER
| SWT.FULL_SELECTION);
availableDevicesList.setContentProvider(new ArrayContentProvider());

Table table = availableDevicesList.getTable();
TableLayout tableLayout = new TableLayout();
table.setLayout(tableLayout);

table.setLinesVisible(true);

tableLayout.addColumnData(new ColumnWeightData(3));
new TableColumn(table, SWT.LEFT);
tableLayout.addColumnData(new ColumnWeightData(1));
new TableColumn(table, SWT.RIGHT);

Что вызывает эту проблему?

1 ответ

Решение

Это ошибка в Windows API, см. Отчет об ошибках SWT. Он влияет только на первый столбец в таблице, поэтому официальным обходным решением является "пропустить" первый столбец и установить для него нулевой размер (см. Последний комментарий к сообщению об ошибке), но в Mac OS X столбец таблицы не может иметь нулевой размер, поэтому он будет виден первый столбец с размером 1 или что-то вроде этого..

Да, ненавижу эту ошибку в Win API тоже..

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