3

Vaadin 7 でプロジェクトを実行しています。その中で、ツリーに重複するアイテムを追加する必要があります。

こんな木が欲しくて、

+ Person A
    Name
    Age
+ Person B
    Name
    Age

しかし、Vaadin Tree コンポーネントは、重複したアイテムをツリーに追加していません。前の項目を上書きしているようです。

Vaadinで上記のようなツリーを持つことは可能ですか? 階層コンテナを使用しています。

アップデート

    Object a = "a";
    Object b = "b";
    Object c = "c";
    Object d = "d";
    Object e = "a";
    Object alphabet = "alphabet";

    HierarchicalContainer aHC = new HierarchicalContainer();
    aHC.addItem(a);
    aHC.addItem(b);
    aHC.addItem(c);
    aHC.addItem(d);
    aHC.addItem(e);
    aHC.addItem(alphabet);
    aHC.setParent(a, alphabet);
    aHC.setParent(b, alphabet);
    aHC.setParent(c, alphabet);
    aHC.setParent(d, alphabet);
    aHC.setParent(e, alphabet);

    Tree tree = new Tree();
    tree.setContainerDataSource(aHC);

オブジェクト a と e は「a」と同じ値を持っているためです。ツリーはそれをスキップまたは置換するだけです。

動的コード

String[] items = {"alphabet", "a", "b", "c", "d", "a"};
for(String item : items) {
   Object itemId = tree.addItem();
   tree.setItemCaption(itemId, item);
}

他のすべてのアイテムの親としてアルファベットを設定するにはどうすればよいですか?

4

3 に答える 3

2

問題はそれa.equals(e) == trueです。したがって、階層コンテナーはそれを 2 回追加しません。

次の 2 つのことを行うことができます。

1)

Object itemId = select.addItem();
select.setItemCaption(itemId, "The Sun");

詳細はこちら

2) たとえば実装する POJO オブジェクトを使用してtoString()、アイテムのキャプションを設定するか、別のアイテムのキャプション モードを使用します。select.setItemCaptionMode(Select.ITEM_CAPTION_MODE_XYZ);

詳細はこちらも。

あなたの編集によると: 子アイテムを追加した後:

tree.setParent(itemChildId, itemAlphabetId);

ここの例を参照してください。

于 2013-07-16T15:17:20.230 に答える