如何使用SWT Combo

时间:2018-01-23 12:58:43

标签: eclipse-plugin swt eclipse-rcp jface

我想将枚举值绑定到SWT Combo。

让我说我有以下代码片段

人员模型类

public class Person {
 private String name;
 private Gender gender;

 public setGender(Gender gender) {
   this.gender = gender;
 }

 public Gender getGender() {
   return gender;
 }
}

性别枚举

public enum Gender {
  MALE("male"), FEMALE("female");
}

组合选择与人物性别属性之间的绑定。

IObservableValue<?> observeWidget = WidgetProperties.selection().observe(combo);                
IObservableValue<?> observeModel = PojoProperties.value(person.getClass(), "gender").observe(person);

在组合值和枚举性别之间绑定。

IObservableList<?> observeWidget = WidgetProperties.items().observe(combo);
IObservableList<?> observableList = PojoProperties.list(enumGender.getClass(), "???? property name ????").observe(enumGender);

我怎样才能达到上面的绑定?

我想用SWT组合绑定Gender.values()(此方法默认在每个枚举中并返回一个字符串数组)。 对于绑定,我们必须在API调用中提供属性名称,但枚举不包含任何此类属性。

我知道我们可以使用ComboBoxViewer来实现这一点 comboViwer.setInput(Gender.values())。 但我想用组合绑定任何枚举。

1 个答案:

答案 0 :(得分:0)

您是否检查过片段Snippet034:

  

https://github.com/eclipse/eclipse.platform.ui/blob/master/examples/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet034ComboViewerAndEnum.java

根据您正在使用的版本,您可能需要调整呼叫以及#34; bindValue&#34;传递更少/更多的参数