【发布时间】:2012-10-26 14:33:40
【问题描述】:
我想为 ComboViewer 使用 JFace 数据绑定,但我不知道如何正确执行此操作。
这是我目前的进度:
CCombo c= new CCombo(grpCpu, SWT.BORDER);
c.setEditable(false);
ComboViewer c_viewer = new ComboViewer(text_6);
c_viewer.setContentProvider(new ArrayContentProvider());
c_viewer.setLabelProvider(new LabelProvider() {
@Override
public String getText(Object element) {
return Activator.getSomeService().key2Value((Integer) element);
}
});
c.setInput(new int[]{1, 2, 3});
key2Value 方法(将 int 值转换为字符串的简单映射):
public String key2Value(int key){
return someHashMap.get(key);
}
还有数据绑定:
// IObservableValue target = SWTObservables.observeSelection(c);
IObservableValue target = ViewersObservables.observeSingleSelection(c_viewer);
IObservableValue model = BeansObservables.observeValue(getInputObject(), "id");
ctx.bindValue(target, model, null, null);
绑定已经正常工作。如果 UI 中的选择发生更改,则模型中的值也会更改。但是没有初始选择!
我真的需要一些帮助。提前谢谢!
顺便说一句:如果我绑定的是 CCombo 而不是 Viewer,那么会有一个正确的初始选择(参见第二个 sn-p 中的注释行)!但是,如果我从 CCombo 框中选择任何其他项目,则模型的值不会更改!
【问题讨论】:
标签: java data-binding jface