为了账号安全,请及时绑定邮箱和手机立即绑定

用于拖放的JLabel鼠标事件

用于拖放的JLabel鼠标事件

一只萌萌小番薯 2019-08-05 15:55:02
用于拖放的JLabel鼠标事件我希望通过覆盖它上面的鼠标事件来启用JLabel上的拖放功能,但是当我在mousePressed事件中定义拖放时,mouseReleased不会对该JLabel生效。难道我做错了什么 ?            Thumbnails[I_Loop].setText("1");             Thumbnails[I_Loop].setTransferHandler(new TransferHandler("text"));             Thumbnails[I_Loop].addMouseListener( new MouseAdapter() {                 public void  mouseReleased(MouseEvent me) {                        System.out.println("here mouse released");                   }                 public void mousePressed(MouseEvent me) {                     System.out.println("here mouse pressed");                     JComponent comp = (JComponent) me.getSource();                     TransferHandler handler = comp.getTransferHandler();                     handler.exportAsDrag(comp, me, TransferHandler.COPY);             });*缩略图是JLabel的数组运行程序时,拖放工作,但“此处鼠标已释放”语句不会打印。但是,当我从mousePressed()方法中删除负责DND的代码时,将打印“此处鼠标已释放”。这段代码有什么问题?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

好吧,如果我没记错的话,拖放机器会捕获所有鼠标事件并自行处理它们。因此,不再抛出正常的MouseEvents。你需要DropTargetListener在JLabel上注册一个DropTarget


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 551 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信