如何在Vaadin中迭代ComboBox?

时间:2011-11-15 10:28:55

标签: java combobox containers vaadin

我正在与Vaadin合作,我在使用ComboBox中的选择时遇到了一些麻烦。我的对象看起来像:

class MyObject{
    private String text;
    private Integer i;
    public MyObject(String text,Integer i){
        this.text = text;
        this.i = i;
    }
    public String toString(){
        return text;
    }
    //Getters and setters omitted
}

我将它添加到这样的框中:

MyObject o1 = new MyObject("o1",23);
MyObject o2 = new MyObject("o2",44);
ComboBox box=new ComboBox();
box.addItem(o1);
box.addItem(o2);

当我想获取所选数据时,这非常有效:

MyObject o3 = (MyObject)box.getValue();

但现在我需要遍历ComboBox中的选项,我不知道如何。我似乎需要某种ID,但我不知道如何使用它。我尝试了以下但没有成功,但它不起作用(而且真的很难看):

Collection IDs = box.getItemIds();
Iterator it = IDs.iterator();
while(it.hasNext()){
    Object id = it.next();
    Item item = IDs.getItem(id);
    //What to do now?
}

我想保持我的对象简单,避免使用bean和复杂的容器。 Vaadins的例子主要是针对String的,这对我没有多大帮助。我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:5)

如果查看 javadoc for ComboBox,您会看到addItem方法实际上是在AbstractSelect class上定义的,它实际上将itemId作为参数。 (这又被委托给Select的容器,在这个默认情况下是一个IndexedContainer)

所以,Collection IDs=box.getItemIds();将返回MyObject的集合 - 即你实际上是在追求的。