GWT拖放如何在drop事件中获取widget源

时间:2012-03-04 17:31:27

标签: gwt drag-and-drop

我正在尝试实施一个拖拉机放下我的项目。 我已经管理过,但现在我想区分拖动源。

我将有两个小部件,我可以拖动,可以拨打widget1widget2

widget1.getElement().setDraggable(Element.DRAGGABLE_TRUE);
widget2.getElement().setDraggable(Element.DRAGGABLE_TRUE);

我为每个人做了处理程序

widget1.addDragStartHandler(new DragStartHandler() {

        @Override
        public void onDragStart(DragStartEvent event) {
            // TODO Auto-generated method stub
            event.setData("text", "i am widget1");
            });

widget2.addDragStartHandler(new DragStartHandler() {

        @Override
        public void onDragStart(DragStartEvent event) {
            // TODO Auto-generated method stub
            event.setData("text", "the text is different i am widget2");

现在我有两个绝对面板,一个只能从小部件1接收,另一个小部件2从小部件2

接收
pNorth.addDomHandler(new DropHandler() {            
      @Override
       public void onDrop(DropEvent event) {
         if(widget1){
           // Prevent the native text drop.
            event.preventDefault();
             // Get the data out of the event.
              String text= event.getData("text");                                  
             pNorth.getElement().getStyle().setBackgroundImage("url("+text+")");
           }}
         }, DropEvent.getType());

我怎么能设法做到这一点?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

drop事件似乎不包含有关源元素的信息。

因此,您必须使用event.setData("source", "some info about current widget");来区分已拖动的元素。信息可以是任意的,可以是widget1.getClass().getName()或其他任何允许区分拖动哪种窗口小部件的信息。

注意:"source"标记是任意的,当然,您可以使用任何适合您的标记。

答案 1 :(得分:0)

我最近参与了一项名为GWT DND(Drag& Drop)的工作。它在这些情况下非常有用。这是链接

http://code.google.com/p/gwt-dnd/

<强>演示

http://allen-sauer.com/com.allen_sauer.gwt.dnd.demo.DragDropDemo/DragDropDemo.html