// При нажатии на эту кнопку появляются картинки
JButton button = new JButton("+1");
button.setBounds(10, 10, 300, 40);
frame.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// при создании класса, нужно указать изображение, родительское окно и объект, при наведении
// на который будет уничтожаться изображение
DragableImageLabel label = new DragableImageLabel(
loadImage("img.png"), // картинка
frame, // окно
button // оюъект для уничтожения
);
label.setBounds(100, 100, 100, 100);
frame.add(label);
frame.repaint();
}
});
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class DragableImageLabel extends JLabel {
private int dx, dy;
public Image image;
private JFrame parentWindow;
private JComponent destroyComponent;
public DragableImageLabel(
Image image,
JFrame frame,
JComponent destroyComponent
) {
super();
this.image = image;
this.parentWindow = frame;
this.destroyComponent = destroyComponent;
ImageIcon imageIcon = new ImageIcon(image);
this.setIcon(imageIcon);
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
dx = e.getXOnScreen() - DragableImageLabel.this.getX();
dy = e.getYOnScreen() - DragableImageLabel.this.getY();
}
});
this.addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
DragableImageLabel.this.setLocation(
e.getXOnScreen() - dx,
e.getYOnScreen() - dy
);
DragableImageLabel _this = DragableImageLabel.this;
if (
destroyComponent.getX() <= _this.getX() &&
_this.getX() <= destroyComponent.getX() + destroyComponent.getWidth() &&
destroyComponent.getY() <= _this.getY() &&
_this.getY() <= destroyComponent.getY() + destroyComponent.getHeight()
) {
parentWindow.remove(DragableImageLabel.this);
}
}
});
}
}