1

Vaadin で OptionGroup を作成していますが、やりたいことはこれです。プレーン テキストのキャプションを付ける代わりに、別の CustomComponent をキャプションとして設定したいと考えています。そのため、生成された CustomComponents の配列があり、ユーザーはこれらの中から 1 つを選択する必要があります。それで、これを行う方法はありますか?

4

2 に答える 2

5

FlexibleOptionGroupアドオンが必要なようです。

実装例を次に示します。

@Override
protected void init(VaadinRequest request) {

    Container cont = new IndexedContainer(); // create a container
    cont.addContainerProperty("caption", String.class, "");
    cont.getContainerProperty(cont.addItem(), "caption").setValue("first");
    cont.getContainerProperty(cont.addItem(), "caption").setValue("second");
    cont.getContainerProperty(cont.addItem(), "caption").setValue("third");

    FlexibleOptionGroup fog = new FlexibleOptionGroup(cont);
    fog.setItemCaptionPropertyId("caption");
    fog.setMultiSelect(true); // force using CheckBoxes

    VerticalLayout fogLayout = new VerticalLayout();
    Iterator<FlexibleOptionGroupItemComponent> iter;
    iter = fog.getItemComponentIterator();
    while(iter.hasNext()) {
        // OptionGroupItem part (CheckBox or RadioButton)
        FlexibleOptionGroupItemComponent fogItemComponent = iter.next();
        // CustomComponent part
        Label caption = new Label(fogItemComponent.getCaption());
        caption.setWidth(50, Unit.PIXELS);
        Slider slider = new Slider(1, 100);
        fogLayout.addComponent(
            new HorizontalLayout(fogItemComponent, caption, slider)
        );
    }
    setContent(fogLayout);
}

上記のコードは以下を生成します。

ここに画像の説明を入力

于 2013-11-14T18:37:44.020 に答える