I use Java awt. When redrawing, flicker appears. Tried to do double buffering, but all the flicker remained exactly.
public class SignatureCanvas extends Canvas{ private ArrayList<Point> points = new ArrayList<Point>(); private Image buffer = null; private void cleanPoints() { points.clear(); } public SignatureCanvas() { super(); this.addMouseMotionListener(new SigCanvasMouseMotionListener(this)); this.addMouseListener(new SigCanvasMouseListener(this)); System.out.println(isDoubleBuffered()); } @Override public void paint(Graphics g) { buffer = createImage(this.getWidth(), this.getHeight()); Graphics gBuf = buffer.getGraphics(); gBuf.setColor(Color.WHITE); gBuf.fillRect(0, 0, this.getWidth(), this.getHeight()); gBuf.setColor(Color.BLACK); for(int i = 0; i < points.size() - 1; i++) { Point p1 = points.get(i); Point p2 = points.get(i); gBuf.drawLine((int)p1.getX(), (int)p1.getY(), (int)p2.getX(), (int)p2.getY()); } g.drawImage(buffer, 0, 0, null); } public void mouseDragged(MouseEvent e) { Point tmp = new Point(e.getX(), e.getY()); points.add(tmp); this.repaint(); } public void mouseReleased(MouseEvent e) { }} class SigCanvasMouseListener implements MouseListener{ private SignatureCanvas canvas; public SigCanvasMouseListener(SignatureCanvas c) { canvas = c; } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e){ canvas.mouseReleased(e); } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { }} class SigCanvasMouseMotionListener implements MouseMotionListener{ private SignatureCanvas canvas; public SigCanvasMouseMotionListener(SignatureCanvas c) { canvas = c; } @Override public void mouseDragged(MouseEvent e) { canvas.mouseDragged(e); } @Override public void mouseMoved(MouseEvent e) { }} Tell me, please, what could be the problem?