Измените изображение на Drag & Drop и оставьте старое ниже после того, как я переместил его снова - PullRequest
0 голосов
/ 26 января 2020

Я использую JFrames в JAVA и хочу изменить изображение с помощью Drag & Drop.

После того, как я переместил свое изображение из упавшего места, я хочу, чтобы внизу находился оригинал.

final MouseAdapter DRAG_INIT = new MouseAdapter() {
        @Override public void mousePressed(MouseEvent e) {
            JLabel c = (JLabel) e.getSource();

            // check if there is pawn there
            // label.setEnabled(false);
            // label.removeMouseListener(this);
            //if(c.getName() != 'Pawn') return;

            var handler = c.getTransferHandler();
            handler.exportAsDrag(c, e, TransferHandler.MOVE);
        }
    };

    final TransferHandler ICON_TRANSFER = new TransferHandler( "icon" ) {

        Component target;

         @Override
        public boolean importData(TransferSupport info)
        {
            target = info.getComponent();
            return super.importData( info );
        }

        @Override public void exportAsDrag(JComponent comp, InputEvent e, int action) {
            comp.getDropTarget().setActive(false);
            super.exportAsDrag(comp, e, action);
        }

        @Override public int getSourceActions(JComponent c) {
            return MOVE;
        }

        @Override protected void exportDone(JComponent source, Transferable data, int action) {
            source.getDropTarget().setActive(true);

            if (action == MOVE  &&  source != target) {
                ((JLabel)source).setIcon(null);
            }

        }
    };

   JLabel l = new JLabel();
   l.setIcon(getImage("someicon.png"));
   l.setTransferHandler(ICON_TRANSFER);
   l.addMouseListener(DRAG_INIT);
   my_panel.add(l);

Код, который я создал выше, работает точно так же, как я хочу, за исключением того, что когда Я удаляю свое изображение из упавшего пятна ниже, просто пустое, предыдущее изображение было удалено.

Итак, вопрос: как я могу сбросить предыдущее изображение, которое было там, когда я перемещаю новое изображение, которое я сбросил в другом месте .

...