Java ViewerSupport ComboViewer,如何绑定列表?
这个问题看起来很简单,但我不知道怎么做。 让我们假设以下简短片段:Java ViewerSupport ComboViewer,如何绑定列表?,java,data-binding,combobox,swt,jface,Java,Data Binding,Combobox,Swt,Jface,这个问题看起来很简单,但我不知道怎么做。 让我们假设以下简短片段: List<Long> model = new ArrayList<Long>(); model.add(Long.valueOf(1d)); model.add(Long.valueOf(2d)); model.add(Long.valueOf(3d)); WritableList list = new WritableList(model, Long.class); comboViewer = new
List<Long> model = new ArrayList<Long>();
model.add(Long.valueOf(1d));
model.add(Long.valueOf(2d));
model.add(Long.valueOf(3d));
WritableList list = new WritableList(model, Long.class);
comboViewer = new ComboViewer(composite, SWT.READ_ONLY);
comboViewer.setContentProvider(new ObservableListContentProvider());
ViewerSupport.bind(comboViewer, list, ???);
我必须在ViewerSupport.bind中插入什么作为第三个参数,才能在ComboViewer中显示数字
通常必须有BeanProperties.valuesnew String[]{name}之类的内容,但我希望使用Long的toString getter。您可以通过以下方式绑定ComboViewer:
import org.eclipse.swt.widgets.Combo;
/*
* model - your model object
* modelAttrName - List<Long> attribute name, within your model
* toModel, fromModel - update value strategies. can be jsut new UpdateValueStrategy() in
* the beginning
*/
public static Binding bindCombo(DataBindingContext bindingContext, Object model, String modelAttrName, UpdateValueStrategy toModel, UpdateValueStrategy fromModel) {
Combo combo = comboViewer.getCombo();
return dataBindingContext.bindValue(WidgetProperties.selection().observe(combo),
BeansObservables.observeValue(model, modelAttrName), toModel, fromModel);
}
作为modelAttrName,我必须提供什么?我想这就是问题所在,Long.class的属性就是toString方法。当然,我可以将Long子类化,并提供一个字符串getter和设置属性名,但我认为这种开销非常大。
class MyModel {
private List<Long> longs;
// provide getters and setters for logs class and fire property change events, using property change support
}
MyModel model = new MyModel();
bindCombo(new DataBindingContext(), model, "longs", new UpdateValueStrategy(), new UpdateValueStrategy());