【发布时间】:2011-03-15 08:30:09
【问题描述】:
我想通过在 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);
});
*Thumbnails 是 JLabel 的数组
运行程序时,拖放可以工作,但不会打印“此处鼠标已释放”的语句。但是,当我从 mousePressed() 方法中删除负责 DND 的代码时,会打印“此处鼠标已释放”。
这段代码有什么问题?
【问题讨论】:
-
“对同一个 JLabel 不生效”是什么意思?
-
我的意思是当我在 JLabel 上释放鼠标时没有发生任何事情,“这里鼠标释放”的语句没有打印
-
如果没有编译和运行的最小代码,很难看出哪里出了问题。您能否提供一个 SSCCE 代码,以便我们自己测试和查看?见sscce.org