swt/jface tableViewer开发简化

通过使用本文的设置,引入附件的类,可以达到设置排序,可编辑,显示,换行,适应宽度等功能,

tableViewer可以达到很多功能,但也由于功能的强大,导致需要输入代码的冗余和繁重,有没有一种简单的方法,就可以达到默认的基本功能呢。
答案是有的,通过java的映射机制,我们可以简化很多有规律的代码
在我这篇文章的规范中,model类,会配备一个modelFinal类,final类是为了配置属性的排序,和属性对应的文字的排序。

GoodsBean.java
private int goodsId;
	private String goodsName;
	private String stardard;
	private String category;


对应的final类就应该这样设置
public static GoodsBeanFinal inst = new GoodsBeanFinal();

	//表示各字段,对应的columuIndex
	public  int goodsId = 0;
	public  int goodsName = 1;
	public  int stardard = 2;
	public  int category = 3;
//设置字段的顺序,与下面的COLUMU_NAME对应
	public  int[] COLUMU_INDEX = new int[] { goodsId, goodsName, stardard, category };
	public  String[] COLUMU_NAME = { "商品id", "商品名称", "商品规格", "类目" };
	public  int[] CAN_MODIFY = { goodsId, category };
	
	private GoodsBeanFinal() {
		System.err.println("..............");
	}
	@Override
	public int[] getColumuIndex() {
		// TODO Auto-generated method stub
		return COLUMU_INDEX;
	}

	@Override
	public String[] getColumuName() {
		// TODO Auto-generated method stub
		return COLUMU_NAME;
	}
//复写此接口,表示该数组对应的属性可以编辑
	@Override
	public int[] getCanModify() {
		// TODO Auto-generated method stub
		return CAN_MODIFY;
	}


自此,设置已经完成,只要导入了文章的包,就可以调用生成tableViewer了。

生成代码:
//生成测试数据
List<GoodsBean> list = new ArrayList<GoodsBean>();
		
		for(int i = 0 ; i < 10 ; i++){
			GoodsBean gb = new GoodsBean();
			gb.setGoodsId(i);
			gb.setGoodsName(r.getRandomECN(0, 5));
			gb.setStardard(r.getRandomECN(0, 5));
			gb.setCategory("点我可编辑");
			list.add(gb);
		}
		
		TableViewer tableViewer = new TableViewer(shell,SWT.FULL_SELECTION);
//设置成通用的没有特殊需求的tableViewer
//如果有特殊需求,可以通过复写provider包下的类,达到所需要的要求
		TableUtil.setCommon(tableViewer, GoodsBeanFinal.inst);
		tableViewer.setInput(list);
		tableViewer.refresh();



swt/jface tableViewer开发简化

一下简单说下这些功能的原理:
通过final类
如:我想找寻index为1的属性是谁,通过映射,可以得到对应的属性为goodsName = 1;
通过goodsName获取到model的goodsName属性,达到get,set的功能。
至于更详细的实现操作,请下载源码,查看方法的注释,不在此累述。


swt/jface tableViewer开发简化

如果有问题,请留言。

你可能感兴趣的:(jface,tableViewer,tableViewer优化,tableviewer映射,swt/)