SWT表:自动调整所有列的大小

Qt解决方案是对resizeColumnsToContent()的单个调用,在.NET中可以使用TextRenderer.MeasureText() ,JTable可以使用AUTO_RESIZE_ALL_COLUMNS

在SWT中,有没有一种方法可以在填充列后对程序集进行大小调整?

调用computeSize(SWT.DEFAULT, SWT.DEFAULT)返回相同的值,从而忽略列中剩余的字符。
TableColumn有setWidth() ,但是如何在考虑字体setWidth()获取当前内容的大小提示?

在许多情况下,表条目在运行时更改以反映数据模型中的更改。 添加数据模型的条目也需要调整列的大小,但在我的情况下,在修改模型之后调用.pack()并不能完全解决问题。 特别是装饰品,最后一个条目从未resize。 这种接缝是由异步表查看器更新引起的。 这个剪辑解决了我的问题:

 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(); } } } 

解决:

 private static void resizeColumn(TableColumn tableColumn_) { tableColumn_.pack(); } private static void resizeTable(Table table_) { for (TableColumn tc : table.getColumns()) resizeColumn(tc); }