在许多情况下,表条目在运行时发生更改以反映数据模型中的更改。向数据模型添加条目也需要调整列的大小,但是在我的情况下,在修改模型后调用.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(); } }}


