【发布时间】:2012-04-16 01:46:57
【问题描述】:
我正在使用 JFace TableViewer 和 TableColumnLayout。如何设置列的最小宽度,或者至少防止它被调整为 0 宽度?
TableColumnLayout layout = new TableColumnLayout();
parent.setLayout(layout);
TableViewer viewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.BORDER);
//adding a few columns like this
TableColumn col = new TableColumn(viewer.getTable(), SWT.LEFT);
int minWidth = 100;
layout.setColumnData(col, new ColumnWeightData(10, minWidth, true));
col.setMoveable(true);
...
看来 ColumnWeightData 的 minWidth 参数不适用,我仍然可以将列调整为 0 宽度。
使用类似这样的方法:
col.addControlListener(new ControlListener(){
@Override
public void controlMoved(ControlEvent e) {
}
@Override
public void controlResized(ControlEvent e) {
if(col.getWidth()<5)
col.setWidth(5);
}});
但这看起来相当丑陋,有没有更清洁的方法呢?
【问题讨论】:
-
Helmuth M.,当我完全这样做时,以及 1)当我非常缓慢地将第 3 列的(左)线/网格精确地移动到第 2 列(右网格/线)上时,然后第 2 列不再可见。因此,第 2 列的宽度不会保持为 5。虽然我可以再次移动第 3 列的行并使第 2 列可见。但是为什么宽度不保持在第 2 列的 5 呢?知道我可能做错了什么吗? 2)当我重复此行为三次时,即我将第 2,3 列和第 4 列一一移动到第一列,并使其不可见。我无法再次检索它。
标签: java eclipse-rcp jface