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

最近想用java的swing实现一个功能,实现为一个序列a和另一个序列b建立映射关系。具体步骤是希望在一个图形界面中吧序列a和序列b分别用list或者一个标签序列罗列出来... 最近想用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里的哪一项被拖进来】
展开
 我来答
wh猎人
推荐于2016-06-04 · TA获得超过1125个赞
知道大有可为答主
回答量:1157
采纳率:89%
帮助的人:664万
展开全部
拖曳(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的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式