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();





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




如果有问题,请留言。

git:https://github.com/JavaRui/pers.crwu.swt.tableviewer

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值