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里的哪一项被拖进来】 展开
万分感激
这个我自己也略百度了一下,但是具体实现还是出现一些问题,
我的问题是,比如我构造一个jlist
然后jlist.setDragEnabled(true)
再然后我new DropTarget(jlist, DnDConstants.ACTION_COPY, DropTargetListener);
DropTargetListener里面重写public void drop(DropTargetDropEvent dtde)
那我怎么从dtde里面获得【我从哪里来】和【我被拖到了哪里去】这两个问题呢?还是我的思路有问题?
我从dtde.getResorce()里面只能获得我的jlist对象,不能知道【我从list里的哪一项被拖进来】 展开
1个回答
展开全部
拖曳(Drag and Drop)在Swing中有支持,直接调用setDragEnabled就可以实现“可拖动”效果。
常用的控件中都有:setDragEnabled、setDropMode、setDropTarget。
常用的控件中都有: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的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询