0

我想知道如何使用 I18N 构建 TreeItem 并且菜单项没有不同的标记。

如果我像这样构建 TreeItem:

 @UiField
    Tree tree;

    TreeItem customer = new TreeItem(customerGroup");
       customer.addItem("searchCustomer");
       customer.addItem("create");
       customer.setState(true);

                            tree.clear();
   tree.addItem(customer);


                  @UiHandler("tree")
  public void onSelection(SelectionEvent<TreeItem> event) {
    eventBus.fireEvent(event);
   }

当用户单击“创建”节点时我得到的 ValueChange 令牌是“创建”,然后我得到类似的代码

 public void onValueChange(ValueChangeEvent<String> event) {
  String token = event.getValue();
     if(token.equals("create") 
    {
    CreateCustomerView create = new CreateCustomerView(eventBus,
         customerService);
       content.setContent(create);
    } 

...

但是,如果我想在 TreeItem 节点中使用不同的语言,那么我想要文本以外的其他东西作为标记,也许是一个 id。我可以使用 MVP 模式中的 Places 模式来解决这个问题,如果可以,它是如何工作的?

4

2 回答 2

0

TreeItem有 2 个方法setUserObject(Object userObject)getUserObject. 您可以使用它们或设置一个 ID,然后您可以使用它来检查。但是,我不明白你是如何从 aSelectionEventValueChangeEvent. 您会在两者之间丢失一些信息。

于 2010-11-06T13:42:01.923 回答
0

为什么不将附加到的所选项目SelectionEvent与您之前添加的项目进行比较?像这样的东西:

public void onModuleLoad() {
    Tree tree = new Tree();
    final TreeItem item1 = new TreeItem("item 1");
    TreeItem item2 = new TreeItem("item 2");
    TreeItem item3 = new TreeItem("item 3");
    TreeItem item4 = new TreeItem("item 4");

    tree.addItem(item1);
    tree.addItem(item2);
    tree.addItem(item3);
    tree.addItem(item4);

    tree.addSelectionHandler(new SelectionHandler<TreeItem>() {

        @Override
        public void onSelection(SelectionEvent<TreeItem> event) {
            if (event.getSelectedItem().equals(item1)) {
                Window.alert("item1 selected");
            }
        }
    });

    RootPanel.get().add(tree);
}

还是我错过了什么?

于 2010-11-07T13:09:22.703 回答