4

我正在使用 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);

    }});

但这似乎很丑陋,有没有更清洁的方法呢?

4

1 回答 1

6

Table对此没有内置支持。所以一个Resize听众——就像你在你的问题中展示的那样——是唯一的方法。

于 2012-04-16T07:38:05.987 回答