GWT拖放TreeItem

qui*_*ity 5 gwt drag-and-drop

我正在创建一个树,用户可以通过使用gwt-dnd库将一个TreeItem拖放到另一个TreeItem上来移动TreeItems .我已经读过我应该为每个TreeItem设置一个小部件,并使该小部件可拖动并使用dropTarget.到目前为止,即使只是拖动一个TreeItem,我也没有取得任何成功.我也得到了一个'拖放未处理的例外'.我至少朝着正确的方向前进,还是有更好的方法来做到这一点?任何帮助是极大的赞赏!

// Create the boundary panel
AbsolutePanel main = new AbsolutePanel();
main.setSize("500px", "500px");
// Create Tree and tree root
Tree tree = new Tree();
TreeItem root = new TreeItem();
root.setText("root");
// Create Label widget and construct treeItem from Label
Label itemLabel = new Label("item1");
TreeItem item = new TreeItem(itemLabel);
// Create DragController for the main panel, and make the Label widget draggable
PickupDragController dragController = new PickupDragController(main, true);
dragController.makeDraggable(item.getWidget());
// Add everything to root panel
root.addItem(item);
tree.addItem(root);
main.add(tree);
RootPanel.get().add(main);
Run Code Online (Sandbox Code Playgroud)

Ath*_*ras 0

我建议在这里使用入门指南。

查看如何向项目添加拖放功能

您缺少的是一个放置区域。有些类实现了放置控制器,您应该使用它们。拥有无处掉落的可拖动物品是没有意义的。

您还可以通过实现事件逻辑(OnDropStart 等)来覆盖 dnd 的一些功能

重要的!!!不要忘记将 DropController 注册到 PickupDragController。

这是 dnd 网站的示例

public AbsolutePositionExample(PickupDragController dragController) {
    super(dragController);
    addStyleName(CSS_DEMO_ABSOLUTE_POSITION_EXAMPLE);

    // use the drop target as this composite's widget
    AbsolutePanel positioningDropTarget = new AbsolutePanel();
    positioningDropTarget.setPixelSize(400, 200);
    setWidget(positioningDropTarget);

    // instantiate our drop controller
    absolutePositionDropController = new AbsolutePositionDropController(positioningDropTarget);
    dragController.registerDropController(absolutePositionDropController);
  }
Run Code Online (Sandbox Code Playgroud)