J'ai écrit ce petit programme de peinture, mais chaque fois que je relâche la souris et que je passe à un autre point de l'écran, la ligne est dessinée là-bas. J'ai essayé d'effacer les points lorsque la souris a été relâchée, mais cela supprime tout à l'écran.Peinture à main levée en Java
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
public class PaintingCanvas extends Canvas implements MouseMotionListener, MouseListener {
private ArrayList<Point> points = new ArrayList<Point>();
public PaintingCanvas(int width, int height) {
setBounds(0, 0, width, height);
addMouseMotionListener(this);
addMouseListener(this);
}
public void paint(Graphics g) {
for (int i = 0; i < points.size() - 2; i++) {
Point p1 = points.get(i);
Point p2 = points.get(i + 1);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
}
}
@Override
public void mouseDragged(MouseEvent e) {
points.add(e.getPoint());
repaint();
}
}
1) Pourquoi coder en utilisant des composants AWT dans le millénaire? Dans Swing, vous pouvez substituer un 'JComponent' ou' JPanel' et l'ajouter à un 'JPanel' ou' JApplet 'ou' .. ''JFrame'. 2) 'setBounds (..)' Ne faites pas cela - utilisez des mises en page. 3) Pour une meilleure aide plus tôt, postez un [SSCCE] (http://sscce.org/). –
'PaintingCanvas .. implémente MouseMotionListener, MouseListener' Non, ce n'est pas le cas. –