5

gwt -dndライブラリを使用して、あるTreeItemを別のTreeItemにドラッグアンドドロップすることで、ユーザーがTreeItemを移動できるツリーの作成に取り組んでいます。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);
4

2 に答える 2

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);
  }
于 2014-04-07T08:19:21.677 に答える