GWT Tree Widget getElement()方法无法按预期工作

时间:2015-03-09 11:13:02

标签: gwt tree

我有一个用元素创建的GWT UI面板,我需要在UI中添加一个GWT树

我做了

TreeItem department = new TreeItem("Packages");

      TreeItem salesDepartment = new TreeItem("Package1");
      TreeItem marketingDepartment = new TreeItem("Package2");
      TreeItem manufacturingDepartment = new TreeItem("Package3");

      TreeItem employee1 = new TreeItem("Flight");
      TreeItem employee2 = new TreeItem("Cruilse");
      TreeItem employee3 = new TreeItem("Flight");

      salesDepartment.addItem(employee1);
      salesDepartment.addItem(employee2);
      salesDepartment.addItem(employee3);

      TreeItem employee4 = new TreeItem("Cruise");
      TreeItem employee5 = new TreeItem("Hotel");      


      marketingDepartment.addItem(employee4);
      marketingDepartment.addItem(employee5);       

      TreeItem employee6 = new TreeItem("Cruise");
      TreeItem employee7 = new TreeItem("Hotel");

      manufacturingDepartment.addItem(employee6);
      manufacturingDepartment.addItem(employee7);

      department.addItem(salesDepartment);
      department.addItem(marketingDepartment);
      department.addItem(manufacturingDepartment);


      Tree tree = new Tree();
      tree.addItem(department);

      // consider that treeDiv is already added
      private Element treeDiv = DOM.createDiv();
      DOM.appendChild( treeDiv , tree.getElement() );

当我将树小部件添加为元素时,它只显示文本输入没有展开按钮或任何东西,它不作为树只作为文本。 请告诉我有没有解决这个问题。

1 个答案:

答案 0 :(得分:1)

  // consider that treeDiv is already added
  private Element treeDiv = DOM.createDiv();
  DOM.appendChild( treeDiv , tree.getElement() );
     

当我将树小部件添加为元素时,它只显示文本输入没有展开按钮或任何东西,它不作为树只作为文本。请告诉我有没有解决这个问题。

我不确定该评论意味着什么,因为树刚刚创建,因此无法添加 ,但即使这是一个问题,我也不确定为什么我们必须直接使用树的元素。如果您正在跳过此问题的更多部分,请添加它们。例如:treeDiv添加到了什么?


作为问题的直接答案,请勿这样做。相反,使用小部件自己的add方法,将小部件添加到其他小部件,而不是直接操作dom元素。

例如,如果要直接将树添加到<body>,则看起来像这样:

RootPanel.get().add(tree);

或者,如果您已有父窗口小部件(此处称为panel),只需将其直接添加到该父窗口:

panel.add(tree);

原因是Widget布线有自己的事件布线需要设置 - 为了避免在更糟糕的浏览器中发生内存泄漏,确保在窗口小部件取消时删除事件布线非常重要这页纸。有关更多详细信息,请参阅http://www.gwtproject.org/articles/dom_events_memory_leaks_and_you.html,但简短版本是在将小部件的dom元素实际添加到更大的dom之后,必须调用小部件的onAttach,并且任何子小部件也必须也调用它们的onAttach。将小部件添加到另一个小部件时会自动完成 - 您应该坚持使用该API。