Rysowanie linii za pomocą myszy na płótnie: Java awt

Próbujemy włączyć rysowanie figur (linia na razie) za pomocą myszy na płótnie. Po raz pierwszy wypróbowałem grafikę java. Więc nie wiem, jak się do tego zabrać. To moja pierwsza próba:

<code>package def.grafi;

import java.awt.Canvas;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

  public class Dra {
  Frame f = new Frame();

public void disp() {
    f.setBounds(100, 100, 200, 200);
    MosL ml = new MosL();
    Can c = new Can();
    f.add(c);
    c.addMouseListener(ml);
    c.addMouseMotionListener(ml);
    f.setVisible(true);
}

public static void main(String[] args) {
    Dra d = new Dra();
    d.disp();
}

public class MosL extends MouseAdapter {
    int sx = 0;
    int sy = 0;
    boolean onDrag = false;

    @Override
    public void mouseDragged(MouseEvent e) {
        if (onDrag) {
            int x = e.getX();
            int y = e.getY();

            Canvas comp = (Canvas) e.getSource();
            Graphics g = comp.getGraphics();
                            // comp.repaint(); << for cleaning up the intermediate lines : doesnt work :(
            g.drawLine(sx, sy, x, y);
            return;
        }
        onDrag = true;
        sx = e.getX();
        sy = e.getY();

        System.out.println("Draggg");
    }

    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("Pressed");
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("Released");
        if (onDrag)
            onDrag = false;
    }
}

public class Can extends Canvas {
    @Override
    public void paint(Graphics g) {

    }
}
}
</code>

Problemy: 1) Gdy okna zostaną zminimalizowane i przywrócone, narysowana linia zniknie (ze względu na odmalowanie) 2) Chcę, aby linia podążała za myszą (gdy jest przeciągana). ostatnia linia powinna rozciągać się od punktu naciśnięcia do punktu zwolnienia myszy. Rite teraz, gdy mysz się porusza, rysowane są nowe linie. Nie wiem, jak oczyścić linie pośrednie z płótna.

Czy ktoś może mi pomóc w tych problemach?

questionAnswers(3)

yourAnswerToTheQuestion