【问题标题】:How to handle the drag & drop of a hyperlink in GWT如何处理 GWT 中超链接的拖放
【发布时间】:2011-12-30 12:33:51
【问题描述】:

我想在我的应用中处理超链接的拖放。超链接可能来自任何地方,因此我无法使用setDragable(true)setData("link", "the URL") 来标记它。

一个非常相似的场景是谷歌图片按图片搜索,您可以将图片链接拖放到搜索框。

示例代码,

Label lblDropLink = new Label("在这里放一个链接"); lblDropLink.addDragOverHandler(new DragOverHandler() { @覆盖 公共无效 onDragOver(DragOverEvent 事件) { lblDropLink.setText("放在这里添加链接。"); lblDropLink.setStyleName("dragOverFade"); } }); lblDropLink.addDropHandler(新 DropHandler() { @覆盖 公共无效 onDrop(DropEvent 事件){ event.preventDefault(); // 问题:如何获取链接,甚至其文本? } });

谢谢!

【问题讨论】:

    标签: gwt hyperlink drag-and-drop


    【解决方案1】:

    删除链接时您唯一能得到的就是 URL!

    可以通过调用event.getData(format)方法获取。

    format 可以是“文本”或“网址”(参见dom-datatransfer-getdata)。在测试它时,“text”和“url”总是提供相同的结果。

    所以你需要的代码在“//问题:如何获取链接,甚至它的文本?”是两者之一

    • event.getData("text")
    • event.getData("url")

    这是一个小示例程序:

        final Label lblDropLink = new Label(defaultText);
        lblDropLink.addDragOverHandler(new DragOverHandler() {
    
            @Override
            public void onDragOver(DragOverEvent event) {
                lblDropLink.setText(dragOverText);
            }
        });
    
        lblDropLink.addDropHandler(new DropHandler() {
    
            @Override
            public void onDrop(DropEvent event) {
                event.preventDefault();
    
                RootPanel.get().add(new Label("Dropped source formated with \"text\": " + event.getData("text")));
                RootPanel.get().add(new Label("Dropped source formated with \"url\":  " + event.getData("url")));
            }
        });
    
        RootPanel.get().add(lblDropLink);
    }
    

    应该就是这样了……

    【讨论】:

    • 谢谢@Stefan。这适用于获取 URL。然而 event.getData("text") 也返回 URL 而不是文本。有什么办法改变吗?
    • 抱歉,找不到原因,但遇到了同样的问题。正如我所看到的,当拖动链接时,只有 url 在拖动信息中......我也找不到我在格式中定义的其他字段(格式基本上指向一个键值对...... =
    • 我认为这就是标准的实施方式。也许以后主流浏览器会同时支持 texturl。你现在的回答已经足够好了,再次感谢@Stefan。
    • 谢谢你:)。很高兴我能帮助你。现在1.000点。嗯嗯^^
    【解决方案2】:

    有一个函数叫做getSource()。使用它来投射被拖动对象的源,并在onDrop事件中获取源对象的链接属性。

    例子:

     public void onDrop(DropEvent event) {
         event.preventDefault();
         Link link = (Link)event.getSource(); 
     }
    

    链接是被拖动的对象。然后你可以调用Link.getLink() 或任何你用来获取链接值的东西。

    Hpope 你明白了这个概念:)

    【讨论】:

    • 不正确。如果您尝试调试 event.getSource(),您会看到它实际上是 Label 对象,而不是“Link”。
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多