【问题标题】:Prevent JFace TableColumn from being resized to 0 width防止 JFace TableColumn 被调整为 0 宽度
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2016-02-18
    • 2014-12-18
    • 2020-10-11
    • 2020-11-05
    相关资源
    最近更新 更多