Picture Picture Picture Picture Picture Picture Picture

2020-7-13 swt的自定义数据绑定

工作需求
现在我想给自己画布画的自定义组件来一个数据绑定,这可以省很多工作,而且不容易出错

作用

  将组件转化为实例化类对象的方式,更加容易操作

使用场景

  多组件内容需要保持一致, 多组件操作一个对象 

整理类关系

  part[SelectionWidgetProperty[重写IValueProperty(定位绑定的组件和值)
              [CheckboxSelectionWidgetProperty(反显 和Checkbox互动 绑定观察者) 
                    [CheckboxSelectionListener](观察者)
                     ext->NativePropertyListener]]
              ext ->WidgetValueProperty()
         ext->DelegatingValueProperty(赋值 得到值等 类似于观察者模式)](绑定的数据所在)

这个是自定义组件的绑定
如果是绑定类自定义的类javaBean

使用限制

必须有两个不同的对象,俩对象都已经实例化,最好不存在依赖关系

一个例子

//上下文
DataBindingContext dbc = new DataBindingContext();

	// 触发改变的对象 自定义的组件绑定

// IObservableValue checkboxProperty = CustomWidgetProperties.selection().observe(checkbox);
// //需要改变的对象 一个系统的label组件
// ISWTObservableValue labelProperty = WidgetProperties.text().observe(label);
//
// dbc.bindValue(labelProperty, checkboxProperty);

	BooleanPerson person=new BooleanPerson();
	person.setName(false);
	
	// create new Context
	DataBindingContext ctx = new DataBindingContext();
	 
	// define the IObservables

// IObservableValue target = WidgetProperties.text().
// observe(label);

	IObservableValue target = CustomWidgetProperties.selection().observe(checkbox);
	

	IObservableValue model= BeanProperties.
	  value(BooleanPerson.class,"name").observe(person);
	 
	
	// connect them 第一个参数是目标对象,第二个参数是数据模型
	ctx.bindValue(target, model); 
posted @ 2020-07-13 12:04  云行雨步  阅读(222)  评论(0编辑  收藏  举报
Title - Artist
0:00