java swing 中怎么实现鼠标拖拽控件到另一个控件的功能?

最近想用java的swing实现一个功能,实现为一个序列a和另一个序列b建立映射关系。具体步骤是希望在一个图形界面中吧序列a和序列b分别用list或者一个标签序列罗列出来用鼠标点击序列a上一个元素,拖动到序列b的一个元素上,这两个元素的映射关系就被记录下来了。请问这样的功能怎么实现。最好给出关键的代码,初学swing不是很懂。。百度了一下好像都是讲怎么拖动文件的。。
万分感激
这个我自己也略百度了一下,但是具体实现还是出现一些问题,
我的问题是,比如我构造一个jlist
然后jlist.setDragEnabled(true)
再然后我new DropTarget(jlist, DnDConstants.ACTION_COPY, DropTargetListener);
DropTargetListener里面重写public void drop(DropTargetDropEvent dtde)
那我怎么从dtde里面获得【我从哪里来】和【我被拖到了哪里去】这两个问题呢?还是我的思路有问题?
我从dtde.getResorce()里面只能获得我的jlist对象,不能知道【我从list里的哪一项被拖进来】

拖曳(Drag and Drop)在Swing中有支持,直接调用setDragEnabled就可以实现“可拖动”效果。
常用的控件中都有:setDragEnabled、setDropMode、setDropTarget。追问

可能我没有表达清楚我的困惑,你说的我也稍微了解过,见问题补充

追答

你在DropTargetListener中把各个DataFlavor打印处理看看:

public void drop(DropTargetDropEvent dtde) {
   System.out.println("drop........................");
   Transferable tt = dtde.getTransferable();
   DataFlavor[] flavors = tt.getTransferDataFlavors();
   for (int i = 0; i < flavors.length; i++) {
      DataFlavor dataFlavor = flavors[i];
      System.out.println("[" + i + "]" + dataFlavor);
      try {// 看看这里的数据是否有需要的
        System.out.println("\t" + tt.getTransferData(dataFlavor));
      } catch (Throwable e) {
        e.printStackTrace();
      }
   }
}

 如果上面的还是不行,就用setTransferHandler设置个自定义的TransferHandler的。

追问

  嗯嗯,挺有帮助的,谢谢啦,分数给了

温馨提示:答案为网友推荐,仅供参考