Java. Arrastre y suelte ImageIcon desde JLabel en el panel 1, a JLabel en el panel 2. Agregar la función de contador

He implementado esto muy básico, arrastrar y soltar entre dos JPanels, ¡pero esto realmente no cumple con mis requisitos!

public class test extends JFrame {

{    JPanel mainpanel, storypanel, imageselect;



    public test(){

          mainpanel = new JPanel(new BorderLayout());
          storypanel = new JPanel();
          imageselect = new JPanel();
            MouseListener listener = new MouseAdapter(){
            public void mousePressed(MouseEvent e)
        {
            JComponent c = (JComponent) e.getSource();
            TransferHandler handler = c.getTransferHandler();
            handler.exportAsDrag(c, e, TransferHandler.COPY);
        }
        };

            int j = 0;
            BufferedImage myImages;
            JLabel imgselect = new JLabel();
            try { myImages = ImageIO.read(new File("four.jpg"));
            //myImages[j] = resize(myImages[j]);
            imgselect= new JLabel(new ImageIcon(myImages));
            System.out.println(j);
            imageselect.add(imgselect);
            imgselect.addMouseListener(listener);
            imgselect.setTransferHandler(new TransferHandler("icon"));

            } catch(Exception e) {};

            int i = 0;
            BufferedImage storyimages;
            JLabel storylabel = new JLabel();


            //targetImg = new ImageIcon("lmkpackage/base/TargetImg.jpg");
            try{ storyimages = ImageIO.read(new File("TargetImg.jpg"));
            //storyimages[i] = resize(storyimages[i]);
            storylabel = new JLabel(new ImageIcon(storyimages));
            System.out.println(i);
            storypanel.add(storylabel); 
            storylabel.addMouseListener(listener);
            storylabel.setTransferHandler(new TransferHandler("icon"));
            } catch(Exception e) {};


            mainpanel.add(imageselect, BorderLayout.NORTH);
            mainpanel.add(storypanel, BorderLayout.SOUTH);

            getContentPane().add(mainpanel);



        }

        public static void main(String[] args){

        System.out.println("Application Running");
        JFrame mainframe =  new test();
            mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainframe.setSize(1000,1000);
            mainframe.setVisible(true);

        }

    }

Lo siento, no estaba muy claro aquí. Estoy tratando de arrastrar un ImageIcon desde un JLabel en el panel de selección de imagen, a otro JLabel el panel de la historia. Puedo hacer esto, con el código anterior. Pero cuando hago esto, puedo arrastrar un ImageIcon desde el panel de selección de imagen y reemplazar otro ImageIcon en el mismo panel. No quiero que esto suceda. También puedo arrastrar desde el panel de la historia hasta el panel de selección de imagen, que NO quiero.

¡No estoy pidiendo que me alimenten con un código de cuchara, solo estoy buscando un empujón en la dirección correcta!

EDIT: Me pregunto si hay alguna forma de contar una operación exitosa de arrastrar y soltar, la solución a continuación respondió mi pregunta original.

Respuestas a la pregunta(2)

Su respuesta a la pregunta