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