Image 使用图像在tableviewer中进行奇怪的对齐和布局

Image 使用图像在tableviewer中进行奇怪的对齐和布局,image,alignment,swt,jface,tableviewer,Image,Alignment,Swt,Jface,Tableviewer,我使用带有两列的TableViewer。根据对象的状态,第一个应该包含文本,第二个应该包含图像。标签提供程序是一个自定义提供程序,它扩展了LabelProvider,并实现了ITableLayoutProvider 如果没有显示图像,则说明布局正确,并且第一列中的文本向左对齐。 但是,当至少显示一幅图像时,第一列中的文本在右侧和中间的某个位置对齐,看起来有点难看 布局非常简单: availableDevicesList = new TableViewer(this, SWT.SINGLE |

我使用带有两列的
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);
是什么导致了这个问题

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

是的,我也讨厌Win API中的这个bug