Drag and drop utilizando transferhandler

0 respostas
U

Olá galera, o meu programa abaixo ele cria 3 imagens e permite que você arraste uma em cima da outra, substituindo a imagem do local aonde foi arrastado pela imagem que você arrastou.
Gostaria de saber como trocar as imagens ao invés de substituir. Por exemplo: Se eu arrasto a imagem java1 para a java2, eu não quero apenas que a imagem java2 vire a imagem java1, mas que java1 também virasse java2, espero não ter ficado muito confuso. Agradeço desde já.

import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
        
public class DragAndDrop extends JFrame{
    JLabel pic1, pic2, pic3;
    
    
    public DragAndDrop(){
        super("Drag and Drop Images");
        pic1 = new JLabel();
        pic2 = new JLabel();
        pic3 = new JLabel();
        pic1.setBounds(20,30,120,120);
        pic2.setBounds(250,30,120,120);
        pic3.setBounds(20,140,120, 120);
        pic1.setIcon(new ImageIcon("C:\\Users\\Usori\\Desktop\\Java1.png"));
        pic2.setIcon(new ImageIcon("C:\\Users\\Usori\\Desktop\\Java2.png"));
        pic3.setIcon(new ImageIcon("C:\\Users\\Usori\\Desktop\\Java2.png"));
        
        MouseListener m1 = new MouseListener() {

            @Override
            public void mouseClicked(MouseEvent e) {}

            @Override
            public void mousePressed(MouseEvent x) {
      
            JComponent jc = (JComponent)x.getSource();
            TransferHandler th = jc.getTransferHandler();
            th.exportAsDrag(jc, x, TransferHandler.COPY);
           
  
                  
                
            }
            
            @Override
            public void mouseReleased(MouseEvent e) {}

            @Override
            public void mouseEntered(MouseEvent e) {}

            @Override
            public void mouseExited(MouseEvent e) {}
        };
        
        pic1.addMouseListener(m1);
        pic2.addMouseListener(m1);
        pic3.addMouseListener(m1);
        

        
        pic1.setTransferHandler(new TransferHandler("icon"));
        pic2.setTransferHandler(new TransferHandler("icon"));
        pic3.setTransferHandler(new TransferHandler("icon"));
        
        add(pic1);
        add(pic2);
        add(pic3);
        
        setLayout(new FlowLayout());
        setSize(500,500);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        
        
        
    }
  
    public static void main(String[] args) {
        
        new DragAndDrop();
        
        
        
    }
    
}
Criado 9 de novembro de 2015
Respostas 0
Participantes 1