利用注解简化tableViewer开发

两年没用过swt做开发了,现在看回来两年前的代码写法,确实有些惨不忍睹的地方,利用空余的时间小修小补了一下,但是项目中大体的写法设计还是有些问题的,不过本次重点只在于简化开发配置,本次用了注解的方式去处理配置,感觉比之前的字符串的方式,要方便许多。

新增注解说明类:

@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到  
@Target({ElementType.FIELD,ElementType.METHOD})//定义注解的作用目标**作用范围字段、枚举的常量/方法  
@Documented//说明该注解将被包含在javadoc中
public @interface YtTableItemAnno {

	/**是否可编辑*/
	boolean editor() default false;
	
	/** table的header列的文本 */
	String itemText() ;
	
	/** table的header列的宽度*/
	int width() default 80 ; 
	
	/** header的排序*/
	int itemIndex() ;
	
	
}

注解说明类,处理了常用的tableviewer的列功能处理,如宽度,可编辑等。 

 

新增javabean用来对应tableviewer的列元素显示。

public class InOrderDesc {
	private int inOrderId;
	private String no;
	private String supName;
	private float allMoney = 0.00f;

	// 订单id|合同号|供应商|总金额
	
	@YtTableItemAnno(editor = false, itemText = "订单id", itemIndex = 0 , width = 50)
	public int getInOrderId() {
		return inOrderId;
	}

	public void setInOrderId(int inOrderId) {
		this.inOrderId = inOrderId;
	}
	@YtTableItemAnno(editor = false, itemText = "合同号", itemIndex = 1 , width = 50)
	public String getNo() {
		return no;
	}

	public void setNo(String no) {
		this.no = no;
	}
	@YtTableItemAnno(editor = true, itemText = "供应商(可编辑)", itemIndex = 2 ,  width = 100)
	public String getSupName() {
		return supName;
	}

	public void setSupName(String supName) {
		this.supName = supName;
	}

	@YtTableItemAnno(editor = true, itemText = "总金额(可编辑)", itemIndex = 3 ,  width = 100)
	public float getAllMoney() {
		return allMoney;
	}

	public void setAllMoney(float allMoney) {
		this.allMoney = allMoney;
	}

	@Override
	public String toString() {
		return "InOrderDesc [inOrderId=" + inOrderId + ", no=" + no
				+ ", supName=" + supName + ", allMoney=" + allMoney + "]";
	}
	@YtTableItemAnno(editor = true, itemText = "是否超过20块", itemIndex = 4 ,  width = 50)
	public String getFlag() {
		if (allMoney > 20) {
			return "是";
		}
		return "否";
	}

}

 可以看到,现在的配置,直接是写在了javabean中,不需要单独去做处理

 

而生成一个tableviewer的方式,只需要以下写法

 

	private void initTable2() {
		List<InOrderDesc> list = new ArrayList<InOrderDesc>();
		//创建随机数据
		for(int i = 0 ; i < 10 ; i++){
			InOrderDesc gb = new InOrderDesc();
			gb.setInOrderId(i);
			gb.setNo(r.getEnRandom(5, 10));
			gb.setSupName(r.getChRandom(1, 3));
			gb.setAllMoney(Float.valueOf(r.getNumFixed(4))/100);
			list.add(gb);
		}
		//初始化tableViewer
		YtCheckBoxTable tableViewer = YtCheckBoxTable.newSimpleTable(this, InOrderDesc.class);
		//设置数据显示列表
		tableViewer.setEoList(list);
		
		
	}

 

 效果图如下:



 

总体的作法,就是在你创建一个bean的时候把你所需要的处理用注解的方式写入进去,就可以生成一个tableviewer了。git代码而下

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

或者下载附件

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值