Java 如何将拖放添加到包含图像的JLabel?
下面是我向JLabel添加mouseMotionListener的代码。我希望玩家拖动其中一个图标并将其移动到其他任何位置。然而,没有任何图像移动一点,也没有发生任何事情(也没有错误) 我还是JavaGUI的新手。请帮忙Java 如何将拖放添加到包含图像的JLabel?,java,user-interface,Java,User Interface,下面是我向JLabel添加mouseMotionListener的代码。我希望玩家拖动其中一个图标并将其移动到其他任何位置。然而,没有任何图像移动一点,也没有发生任何事情(也没有错误) 我还是JavaGUI的新手。请帮忙 p1label.setIcon(p1icon); p2label.setIcon(p2icon); p3label.setIcon(p3icon); p4label.setIcon(p4icon); p1label.setTransfe
p1label.setIcon(p1icon);
p2label.setIcon(p2icon);
p3label.setIcon(p3icon);
p4label.setIcon(p4icon);
p1label.setTransferHandler(new TransferHandler("p1"));
p2label.setTransferHandler(new TransferHandler("p2"));
p3label.setTransferHandler(new TransferHandler("p3"));
p4label.setTransferHandler(new TransferHandler("p4"));
MouseMotionListener mouseAction = new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
JComponent label = (JComponent) e.getSource();
TransferHandler th = label.getTransferHandler();
th.exportAsDrag(label,e,TransferHandler.COPY);
}
};
p1label.addMouseMotionListener(mouseAction);
p2label.addMouseMotionListener(mouseAction);
p3label.addMouseMotionListener(mouseAction);
p4label.addMouseMotionListener(mouseAction);
我将拖动的方法更改为setLocation,而不是使用TransferHandler。它工作得很好!希望这个例子能对你们中的一些人有所帮助
p1label.setIcon(p1icon);
p2label.setIcon(p2icon);
p3label.setIcon(p3icon);
p4label.setIcon(p4icon);
MouseMotionListener mouseAction = new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
JComponent label = (JComponent) e.getSource();
label.setLocation(label.getLocation().x + e.getX(), label.getLocation().y + e.getY());
}
};
p1label.addMouseMotionListener(mouseAction);
p2label.addMouseMotionListener(mouseAction);
p3label.addMouseMotionListener(mouseAction);
p4label.addMouseMotionListener(mouseAction);