最近在做将Gephi转成Eclipse RCP平台下的项目,目前在改造属性表格控件,遇到需要设置表格的列宽有个最小值,经过研究暂时算是解决了,不过感觉还是不完美,但先记录下来,如果有谁有更好的方法,希望能相互讨论一下,代码如下:
package com.cntrust.swt.util;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TreeColumn;
/**
* 表格工具类
*
* @author 倪庆洋 <niqy@qq.com>
*
* @date Mar 27, 2015 11:18:55 AM
*/
public class TableUtils {
/**
* 为列设置最小宽度
*
* @param column
* @param minWidth
*/
public static void setColumnMinWidth(final TableColumn column, final int minWidth) {
if (column.getWidth() < minWidth) {
column.setWidth(minWidth);
}
column.addListener(SWT.Resize, new Listener() {
@Override
public void handleEvent(Event event) {
if (column.getWidth() < minWidth) {
//设置最小宽度
column.setWidth(minWidth);
// 模拟鼠标释放事件
event.type = SWT.MouseUp;
event.button = 1;
event.display.post(event);
//设置最小宽度
column.setWidth(minWidth);
}
}
});
}
/**
* 为列设置最小宽度
*
* @param column
* @param minWidth
*/
public static void setColumnMinWidth(final TreeColumn column, final int minWidth) {
if (column.getWidth() < minWidth) {
column.setWidth(minWidth);
}
column.addListener(SWT.Resize, new Listener() {
@Override
public void handleEvent(Event event) {
if (column.getWidth() < minWidth) {
//设置最小宽度
column.setWidth(minWidth);
event.type = SWT.MouseUp;
event.button = 1;
event.display.post(event);
//设置最小宽度
column.setWidth(minWidth);
}
}
});
}
}