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);
}});
しかし、それはかなり醜いようです、それを行うためのよりクリーンな方法はありますか?