6

我使用TableViewer带有两列的 a 。第一个应包含文本,第二个应包含图像,具体取决于对象的状态。标签提供者是一个自定义提供者,它扩展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);

是什么导致了这个问题?

4

1 回答 1

2

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

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

于 2011-06-17T07:41:25.583 回答