Рисование линий с помощью мыши на холсте :Java awt

Попытка разрешить рисование фигур(линии на данный момент)с помощью мыши на холсте awt. Я впервые пробую java-графику. Так что не уверен, как это сделать. Это моя первая попытка:

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) {

    }
}
}

Проблемы :1)Когда окна свернуты и восстановлены, нарисованная линия исчезла (из-за перерисовки)2)Я хочу, чтобы линия следовала за мышью (, когда ее перетаскивают). последняя линия должна проходить от точки нажатия до точки отпускания мыши. Объясните теперь, когда мышь двигается, рисуются новые линии. Я не знаю, как убрать промежуточные линии с холста.

Может ли кто-нибудь помочь мне с этими проблемами?

7
задан GingerHead 10 July 2014 в 09:52
поделиться