Я использую 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);
Код, который я создал выше, работает точно так же, как я хочу, за исключением того, что когда Я удаляю свое изображение из упавшего пятна ниже, просто пустое, предыдущее изображение было удалено.
Итак, вопрос: как я могу сбросить предыдущее изображение, которое было там, когда я перемещаю новое изображение, которое я сбросил в другом месте .