使TableViewer列自动采用其最长字段的宽度

时间:2013-08-14 18:41:49

标签: java eclipse swt jface tableviewer

我正在使用TableViewer,我正在尝试让所有列都采用其最长文本项的宽度。

到目前为止,我已经创建了一个TableLayout来将列添加到表中。问题是添加列需要使用ColumnWeightData,这迫使我指定列的大小。但是,我事先并不确切知道列的宽度应该是什么 - 它可以是任何东西。

theTableViewer = new TableViewer(comp, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
GridData theTableGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
theTableViewer.getTable().setLayoutData(theTableGridData);
TableLayout layout = new TableLayout();
layout.addColumnData(new ColumnWeightData(100, true));
layout.addColumnData(new ColumnWeightData(100, true));
layout.addColumnData(new ColumnWeightData(100, true));
layout.addColumnData(new ColumnWeightData(100, true));

有谁知道如何让TableViewer自动调整其列的大小以包含所有内容?

1 个答案:

答案 0 :(得分:1)

没有内置方法可以做到这一点。当桌子的内容发生变化时,你必须听取事件并自己计算尺寸。