Gwt 如何使用dataTransfer.setDragImage()在拖放过程中显示ImageResource?

Gwt 如何使用dataTransfer.setDragImage()在拖放过程中显示ImageResource?,gwt,drag-and-drop,Gwt,Drag And Drop,我正在尝试在GWT中拖放一个单元格,并使用dataTransfer.setDragImage()自定义拖动图像。 我的图像是一个图像资源,以下是我拥有的: 下面是我如何构建我的“可拖动单元” 以下是用于拖动的eventHandler: @Override public void onBrowserEvent(Context context, Element parent, Boolean value, NativeEvent event, ValueUpdater<Boo

我正在尝试在GWT中拖放一个单元格,并使用dataTransfer.setDragImage()自定义拖动图像。 我的图像是一个图像资源,以下是我拥有的:

下面是我如何构建我的“可拖动单元”

以下是用于拖动的eventHandler:

@Override
  public void onBrowserEvent(Context context, Element parent, Boolean value, 
      NativeEvent event, ValueUpdater<Boolean> valueUpdater) {
    String type = event.getType();

    boolean enterPressed = "keydown".equals(type) && event.getKeyCode() == KeyCodes.KEY_ENTER;

    if ("dragstart".equals(type)){
        DataTransfer dataTransfer = event.getDataTransfer();
        dataTransfer.setData("text", String.valueOf(context.getIndex()));

        if (icon != null){
            Image image = icon.createImage();
            image.setVisible(true);
            dataTransfer.setDragImage(ImageElement.as(image.getElement()), 25, 15);
        }
@覆盖
public void onBrowserEvent(上下文上下文、元素父级、布尔值、,
NativeEvent事件,ValueUpdater(ValueUpdater){
字符串类型=event.getType();
布尔enterPressed=“keydown”。等于(类型)和&event.getKeyCode()==KeyCodes.KEY\u输入;
如果(“dragstart”.equals(类型)){
DataTransfer DataTransfer=event.getDataTransfer();
dataTransfer.setData(“text”,String.valueOf(context.getIndex());
如果(图标!=null){
Image=icon.createImage();
image.setVisible(true);
dataTransfer.setDragImage(ImageElement.as(image.getElement()),25,15);
}
但不知何故,该图像从未显示。为了调试,我创建了一个对话框,并在调用eventHandler时在那里显示了该图像,果然它在那里显示了……但在调用dataTransfer.setDragImage(…)函数时却没有显示。
任何帮助都将不胜感激。

在这种情况下,可能是浏览器支持的问题

我已经尝试过这个HTML5本机拖放演示:


它的自定义拖动图像部分对我不起作用(Chrome 17.0.932.0 dev-m)。

在第一种情况下,图像未显示的原因是未将
ImageElement
添加到DOM中


尝试将
ImageElement.as(image.getElement())
添加到DOM中,然后它就会显示出来。

拖放对我来说很有用……只是我无法自定义重影拖动image@daghan这就是我说的。它可能不受支持。在上面的链接中,鬼图像演示对你有用吗?
@Override
  public void onBrowserEvent(Context context, Element parent, Boolean value, 
      NativeEvent event, ValueUpdater<Boolean> valueUpdater) {
    String type = event.getType();

    boolean enterPressed = "keydown".equals(type) && event.getKeyCode() == KeyCodes.KEY_ENTER;

    if ("dragstart".equals(type)){
        DataTransfer dataTransfer = event.getDataTransfer();
        dataTransfer.setData("text", String.valueOf(context.getIndex()));

        if (icon != null){
            Image image = icon.createImage();
            image.setVisible(true);
            dataTransfer.setDragImage(ImageElement.as(image.getElement()), 25, 15);
        }