Странное выравнивание и расположение в просмотрщике таблиц с изображением
Я использую 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 тоже..