在许多情况下,表条目会在运行时更改以反映数据模型中的更改。向数据模型添加条目也需要调整列的大小,但在我的情况下,在修改模型后调用 .pack() 并不能完全解决问题。特别是带有装饰的最后一个条目永远不会调整大小。这似乎是由于异步表查看器更新造成的。这个剪断解决了我的问题:
public class LabelDecoratorProvider extends DecoratingStyledCellLabelProvider {
public LabelDecoratorProvider(IStyledLabelProvider labelProvider,
ILabelDecorator decorator, IDecorationContext decorationContext) {
super(labelProvider, decorator, decorationContext);
}
@Override
public void update(ViewerCell cell) {
super.update(cell);
if (TableViewer.class.isInstance(getViewer())) {
TableViewer tableViewer = ((TableViewer)getViewer());
Table table = tableViewer.getTable();
for (int i = 0, n = table.getColumnCount(); i < n; i++)
table.getColumn(i).pack();
}
}
}