Ich möchte Kollisionen für Drag-Komponenten in Java Swing erstellen können
Posted: 07 Jan 2025, 05:58
Ich habe versucht, eine JPanel-Komponente aus einem von mir angesehenen YT-Video herausziehbar zu machen. Das Problem dabei ist, dass sie das Panel zieht, auch wenn sich meine Maus nicht direkt darüber befindet. Ich habe auch versucht, im Internet nachzusehen, wie man Grenzen für das Ziehen festlegt, konnte aber nichts dazu finden. Ich habe mich gefragt, ob jemand die Lösung hat.
Code: Select all
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class DragPanel extends JPanel {
ImageIcon image = new ImageIcon("A:\\Aseprite\\Saves\\Blue Log.png");
Point imageCorner;
Point prePt;
DragPanel() {
imageCorner = new Point(0,0);
ClickListener clickListener = new ClickListener();
DragListener dragListener = new DragListener();
this.addMouseListener(clickListener);
this.addMouseMotionListener(dragListener);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
image.paintIcon(this, g,(int)imageCorner.getX(),(int)imageCorner.getY());
}
private class ClickListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
prePt = e.getPoint();
}
}
private class DragListener extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
Point currentPt = e.getPoint();
imageCorner.translate(((int)(currentPt.getX() - prePt.getX())), (int)(currentPt.getY() - prePt.getY()));
prePt = currentPt;
repaint();
}
}
}