acredito q so exista um jeito
so eh possivel vc apagar um desenho todo de um vez chamando o metodo repaint() Confused
entao vc precisa guardar as informações sobre o desenho… para desenhar novamente o q for preciso
Wink
Hoje fui mexer na classe novamente e Consegui, se alguem quiser ler a classe e ver se foi implementada da melhor forma :). Para apagar os outros desenhos, desenhei um retangulo sobre eles, será que foi a melhor alternativa em termos de desempenho ? a cada pixel movido pelo mouse eh um reangulo sobre escritto 
grato.
/*
* Created on Dec 30, 2004
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
/**
*
*
* Copyright 2005 - Rober Hoelscher
* Frederico Westphalen - Brazil
*
* @author Rober Hoelscher - [email removido]
* @version undefined
*
*/
public class Drawing{
JFrame janela;
DrawingPanel drawingPanel;
Drawing(){
janela = new JFrame("Drawing");
drawingPanel = new DrawingPanel();
/***Adiciona componentes***/
janela.getContentPane().add(drawingPanel);
/***Configura exibição da janela***/
janela.setSize(400,300);
janela.setBackground(Color.WHITE);
janela.setVisible(true);
/***Configura o fechamento da janela***/
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/***Método construtor***/
public static void main(String[] args) {
Drawing d = new Drawing();
}
}
/***
* ---
*/
class DrawingPanel extends JPanel implements MouseListener , MouseMotionListener{
private JPanel drawPanel;
/***Coordenadas do mouse no JPanel***/
private int x , x2 , x3;
private int y , y2 , y3;
private Vector lines ;
private Vector color ;
DrawingPanel(){
this.setBackground(Color.WHITE);
/***Configura ouvintes do mouse***/
this.addMouseListener(this);
this.addMouseMotionListener(this);
lines = new Vector(50,50);
color = new Vector(50,50);
}
/*** Interfaces para controle do mouse ***/
public void mouseMoved(MouseEvent event){
}
public void mousePressed(MouseEvent e){
x = e.getX();
y = e.getY();
x2 = -1 ;
/***Anexa um (-1) sentinela ao Rentangle***/
// color.addElement(getForeground());
// lines.addElement(new Rectangle(x,y,-1,-1));
// repaint();
}
public void mouseDragged(MouseEvent e){
// color.addElement(getForeground());
// lines.addElement(new Rectangle(x,y,x2,y2));
x3 = e.getX();
y3 = e.getY();
repaint();
}
public void mouseReleased(MouseEvent e){
x2 = e.getX();
y2 = e.getY();
color.addElement(getForeground());
lines.addElement(new Rectangle(x,y,x2,y2));
repaint();
/***Anexa um (-1) sentinela ao Rentangle***/
x = -1 ;
}
public void mouseClicked(MouseEvent event){
}
public void mouseEntered(MouseEvent event){
}
public void mouseExited(MouseEvent event){
}
/***Reescreve o método paint***/
public void paint(Graphics g){
Rectangle r ;
/***Desenha um retangulo branco na janela para remover os desenhos anteriores***/
g.setColor(Color.WHITE);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(getForeground());
for(int i = 0 ; i < lines.size() ; i++){
r = (Rectangle) lines.elementAt(i);
g.setColor((Color)color.elementAt(i));
g.drawLine(r.x,r.y,r.width,r.height);
}
if(x != -1) {
g.drawLine(x,y,x3,y3);
}
}
}