2012-04-16 10 views
4

JFace TableViewerとTableColumnLayoutを使用しています。どのように列の最小幅を設定することができますか、または少なくともそれが0幅にサイズ変更されないようにしますか?JFace TableColumnが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); 

    }}); 

しかし、それはかなり醜いようだ、それを行うためのクリーンな方法は何ですか?

+0

Helmuth M.、私がこのように正確にしているとき、1)非常にゆっくりと(3)の行/グリッドを正確に(右のグリッド/行の)列2に移動すると、列2は表示されませんもうしたがって、列2の幅は5に維持されませんが、列3の行を再び移動して列2を表示させることができます。しかし、幅が列2の5に維持されないのはなぜですか?私が間違っているかもしれないどんなアイデア? 2)この動作を3回繰り返すと、2,3,4列目が1列目に1つずつ移動し、目に見えなくなります。私は再びそれを取得することはできません。 – user523956

答えて

6

Tableにはこれが組み込まれていません。だからResizeあなたの質問に表示されているようにリスナー - 唯一の方法です。

関連する問題