用于拖放的JLabel鼠标事件

用于拖放的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的代码时,将打印“此处鼠标已释放”。

这段代码有什么问题?


一只萌萌小番薯
浏览 552回答 3
3回答

长风秋雁

好吧,如果我没记错的话,拖放机器会捕获所有鼠标事件并自行处理它们。因此,不再抛出正常的MouseEvents。你需要DropTargetListener在JLabel上注册一个DropTarget。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java