问题描述
|
我试图将对象的ArrayList绑定到Java SWT List小部件。这就是我所拥有的:
DataBindingContext bindingContext = new DataBindingContext();
//
myModel= new WritableList(buses,MyObject.class);
IObservableList listWidgetobs = SWTObservables.observeItems(listWidget);
bindingContext.bindList(listWidgetobs,myModel,null,null);
//
return bindingContext;
但是以某种方式,它似乎不起作用。我已经尝试了很长时间,但仍然没有运气。这是我第一次尝试用Java进行数据绑定。如何将ArrayList绑定为SWT List小部件的数据提供程序,然后将其绑定到MyObject类中方法调用getName()的值?
谢谢!
解决方法
在您的示例中,模型列表(
myModel
)似乎包含类型为MyObject
的对象。但这是错误的,因为SWTList
的内容列表必须为字符串。
您(至少)有三个选择:
列表中的对象必须为“ 4”类型,因此在创建可观察列表时必须转换对象,或者
您必须在bindingList(...)
中提供UpdateListStrategy
,或者
你用LabelProvider
绑定bind7ѭ
选择取决于“ 1”的对象是否可以动态更改。
我通常会尽可能选择第二个选项,因为除非确实需要,否则我尽量不要将数据绑定和JFace混合使用。替代方法有时可能会得到一些难看的通知/侦听器链...