SWT TableColumn TreeColum 设置最小宽度

阅读更多

最近在做将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 倪庆洋 
 * 
 * @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);
				}
			}
		});

	}

}

 

 

你可能感兴趣的:(Java,Eclipse,SWT)