Java 防止将JFace TableColumn的大小调整为0宽度

Java 防止将JFace TableColumn的大小调整为0宽度,java,eclipse-rcp,jface,Java,Eclipse Rcp,Jface,我使用的是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 li

我使用的是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);

    }});
col.addControlListener(新的ControlListener(){
@凌驾
公共无效控制移动(控制事件e){
}
@凌驾
公共无效控件已调整大小(ControlEvent e){

if(col.getWidth()
没有内置的支持。因此,
调整大小
侦听器——正如您在问题中所示——是唯一的方法。

Helmuth M.,当我完全这样做时,以及1)当我非常缓慢地移动(左)列3的线/网格时(右网格线)第2列,第2列不再可见。因此第2列的宽度不再保持为5。虽然我可以再次移动第3列的行并使第2列可见。但为什么第2列的宽度不保持为5?知道我可能做错了什么吗?2)当我重复这三次行为时,即将第2、3和4列逐个移动到第一列-1,使其不可见,无法再次检索。