java实现一张图片拖拽到另一张图片位置

动态 未结 0 114
小小草
小小草 LV1 2023年9月23日 23:40 发表
Java实现一张图片拖拽到另一张图片位置可以使用Java Swing中的Drag and Drop API和MouseListener。以下是一个简单的示例代码: ```java import javax.swing.*; import java.awt.*; import java.awt.datatransfer.*; import java.awt.dnd.*; import java.awt.event.*; public class ImageDragAndDrop extends JFrame implements DragGestureListener, DragSourceListener, DropTargetListener, MouseListener { private JLabel sourceImageLabel; private JLabel targetImageLabel; public ImageDragAndDrop() { super("Image Drag and Drop"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 400); // 创建源标签并设置为可拖拽 sourceImageLabel = new JLabel(new ImageIcon("source.jpg")); sourceImageLabel.setTransferHandler(new TransferHandler("icon")); // 注册拖拽手势监听器 DragSource dragSource = DragSource.getDefaultDragSource(); dragSource.createDefaultDragGestureRecognizer(sourceImageLabel, DnDConstants.ACTION_COPY_OR_MOVE, this); // 创建目标标签并注册拖放目标监听器和鼠标监听器 targetImageLabel = new JLabel(new ImageIcon("target.jpg")); targetImageLabel.addMouseListener(this); targetImageLabel.setTransferHandler(new TransferHandler("icon")); DropTarget dropTarget = new DropTarget(targetImageLabel, this); JPanel panel = new JPanel(new GridLayout(1, 2)); panel.add(sourceImageLabel); panel.add(targetImageLabel); getContentPane().add(panel, BorderLayout.CENTER); setVisible(true); } @Override public void dragGestureRecognized(DragGestureEvent dge) { // 开始拖拽操作 Cursor cursor = null; if (dge.getDragAction() == DnDConstants.ACTION_COPY) { cursor = DragSource.DefaultCopyDrop; } dge.startDrag(cursor, new TransferableIcon((ImageIcon) sourceImageLabel.getIcon()), this); } @Override public void dragEnter(DragSourceDragEvent dsde) {} @Override public void dragOver(DragSourceDragEvent dsde) {} @Override public void dropActionChanged(DragSourceDragEvent dsde) {} @Override public void dragExit(DragSourceEvent d
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复