4

JFaceTableViewerと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 に答える