tableviewer与图像的奇怪对齐和布局

Mat*_*atF 6 swt jface image alignment tableviewer

我使用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);
Run Code Online (Sandbox Code Playgroud)

是什么导致这个问题?

Sor*_*ror 2

这是 Windows API 中的一个错误,请参阅 SWT 错误报告。它仅影响表中的第一列,因此官方解决方法是“跳过”第一列并将其设置为零大小(请参阅错误报告的最后评论),但在 Mac OS X 上表列的大小不能为零,因此会出现可见的第一列大小为 1 或类似的内容..

是的,我也讨厌 Win API 中的这个错误。