RE:Evitar que se borren dibujos al hacer otros
Yo he usado dos paneles, pero no canvas simplemente que en área determinada se aceptan los eventos de mouse, me gustaria saber como guardar la linea. Aquí esta mi codigo del panel para dibujar.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PanelAutoConten extends JPanel{
public final static int POLIGONO=1,SELECCIONAR=2,RELLENAR=3;
private int x1,y1,x2,y2,operacion;
private int cuentapuntos=0,i=0;
private int puntosx[]=new int[100];
private int puntosy[]=new int[100];
//establecer manejo de eventos de raton para PanelAutoContenido
public PanelAutoConten()
{
//establecer eventos de escucha del raton
addMouseListener(
new MouseAdapter(){ //clase interna anonima
//manejar evento de oprimir boton
public void mousePressed(MouseEvent evento)
{
if (cuentapuntos<puntosx.length){
puntosx[cuentapuntos]=evento.getX();
puntosy[cuentapuntos]=evento.getY();
cuentapuntos=cuentapuntos+1;
x1=evento.getX();
y1=evento.getY();
repaint();
}
}
//manejar evento de soltar boton del raton
public void mouseReleased(MouseEvent evento)
{
if (cuentapuntos<puntosx.length){
puntosx[cuentapuntos]=evento.getX();
puntosy[cuentapuntos]=evento.getY();
cuentapuntos=cuentapuntos+1;
}
}
}//fin de la clase interna anonima
);//Fin de la llamada a addMouseListener
//establecer componentes de escucha de movimientos del raton
addMouseMotionListener(
new MouseMotionAdapter(){//clase interna anónima
//manejar evento de arrastrar el raton
public void mouseDragged(MouseEvent evento)
{
x2=evento.getX();
y2=evento.getY();
}
}//fin de la clase interna anínima
);//fin de la llamada a addMouseMotionListener
}//fin del constructor PanelAutoContenido
//devolver altura y anchura predefinidas de PanelAutoContenido
public Dimension getPreferredSize()
{
return new Dimension(400,300);
}
//dibujar una figuras
public void paintComponent(Graphics g){
super.paintComponent(g);
if(x2!=0 && y2!=0)
g.drawLine(x1,y1,x2,y2);
}
//establecer valor de figura y repintar
public void dibujar(int operacionArealizar){
operacion=operacionArealizar;
repaint();
}
}//Fin de la clase PanelAutoContenido