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

这段代码有什么问题?

回答:

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

以上是 Java拖放的JLabel鼠标事件 的全部内容, 来源链接: utcz.com/qa/414110.html

回到顶部