J'essaie d'avoir un cercle sur l'écran, puis lorsque l'utilisateur clique sur INSIDE dans le cercle, activer la possibilité pour eux de faire glisser le cercle où la souris va pendant qu'elle est pressée.Glisser un cercle sur un JFrame
Ceci est le code que j'ai jusqu'ici, le glisser fonctionne, mais il permet à l'utilisateur de faire glisser sans qu'ils pressent l'intérieur du cercle, juste quand n'importe où sur l'écran est pressé.
J'espère que je ne suis pas trop confus
est ici le code que j'ai, s'il vous plaît si quelqu'un pourrait me dire le code qui doit être corrigé, il me sauvera plus heures.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DragCircle extends JFrame {
private static final long serialVersionUID = 1L;
public static int size = 400;
public static int r = 10;
private int x;
private int y;
private int cX;
private int cY;
private int dX;
private int dY;
private MouseHandler mh;
boolean isCircleClicked = false;
public static void main(String[] args) {
DragCircle c1 = new DragCircle();
c1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public DragCircle() {
super("Drag circle");
cX = r + 100;
cY = r + 100;
mh = new MouseHandler();
addMouseListener(mh);
addMouseMotionListener(mh);
setSize(size, size);
setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
g.fillOval(cX, cY, r * 2, r * 2);
}
private class MouseHandler extends MouseAdapter implements
MouseMotionListener {
public void mousePressed(MouseEvent me)
{
if ((cX - me.getX()) * (cX - me.getX()) + (cY - me.getY())
* (cY - me.getY()) < r * r) {
isCircleClicked = true;
}
}
public void mouseDragged(MouseEvent me) {
if (isCircleClicked) {
x = me.getX() - dX;
y = me.getY() - dY;
cX = x + r;
cY = y + r;
repaint();
}
}
public void mouseReleased(MouseEvent e) {
isCircleClicked = false;
}
}
}
vous avez raison à propos de mouseReleased, je vais le mettre dedans, et il a compilé comme ceci. – Madison