我正在使用 GWT 2.5,我想在一个面板中制作一些图像,并在另一个面板中进行拖放。这在 Firefox 上运行良好,但在 IE9 上它只是不想工作。
我几乎整天都在搜索,但没有找到任何解决方案。我发现的最好的线程是这些:
GWT 本机拖放 - DragStartEvent 未在 IE9 上触发
不同之处在于我正在拖动图像,而不是标签。所以这可能是问题所在。
所以代码看起来像这样:
// Draggable Image
final Image img = new Image(imageName);
img.addDragStartHandler(new DragStartHandler() {
@Override
public void onDragStart(final DragStartEvent event) {
event.setData("text", img.getUrl());
}
});
img.getElement().setDraggable(Element.DRAGGABLE_TRUE);
然后我把它放在我的“源”面板中:
// Image in the source container
wunschContainer = new AbsolutePanel();
img.setPixelSize(size, size);
wunschContainer.add(img, left, top);
图片正确显示(Firefox 和 IE9)
目标面板看起来像这样(它是 AbsolutePanel 的子类并实现 HasDragOverHandlers 和 HasDropHandlers)
// Event-handlers for the target container.
this.addDragOverHandler(new DragOverHandler() {
@Override
public void onDragOver(final DragOverEvent event) {
}
});
this.addDropHandler(new DropHandler() {
@Override
public void onDrop(final DropEvent event) {
event.preventDefault();
final String data = event.getData("text");
/* ... some more handling ..., creates an image to be displayed here */
add(image, left, top);
}
});
在 Firefox 中,当我拖动图像时,拖动的图像会显示在鼠标指针下方。在 IE9 上,我根本看不到图像,只有一个符号(带有斜线的圆圈,这个“不允许”符号)。当我松开鼠标按钮时,什么也没有发生。我还用“F12”检查了我使用的是 IE9 模式,没有兼容模式。
我真的不知道问题是什么。代码似乎没问题(适用于 FF)。使用 GWT-Images 制作 DnD 是否有问题?有趣的是,“onDragStart()”方法被触发了。但“拖累”并没有完成。
哦,我正在使用 GWT devmode 来测试这个。这会是个问题吗?
我想只使用 GWT 来解决这个问题。或者我应该去使用另一个库,比如 gwt-dnd?有没有人明白的 GWT DnD ?我不敢相信我是第一个尝试这样做的人:-(。