在GWT中,拖放操作是基于这两个核心类DragSource和DropTarget实现的。请看下面的代码示例:
final LayoutContainer container = new LayoutContainer(); container.setLayoutOnChange(true); container.setBorders(true); container.setSize(200, 200); DropTarget target = new DropTarget(container) { @Override protected void onDragDrop(DNDEvent event) { Html html = event.getData(); container.add(html); } }; Html html = new Html("Drag Me "); DragSource source = new DragSource(html) { @Override protected void onDragStart(DNDEvent event) { // by default drag is allowed event.setData(html); event.getStatus().update(El.fly(html.getElement()).cloneNode(true)); } };
El.fly(getSelf().getElement()).cloneNode(true) 这句克隆了你当前的节点,让其跟随鼠标移动。注意你的节点的样式,千万别是什么绝对定位或者有margin的,否则拖放就会显示不正常。