Repintar componente
Hola, estoy realizando unas prácticas con las Swing de java y tengo un problemilla.
Resulta que mi aplicación quiero que continuamente esté dibujando lineas, pero que no sobreescriba lo que ya ha dibujado. Es decir, si le digo que dibuje una linea, y ya hay otra dibujada en el panel, que no borre la anterior.
Actualmente, desde un JPanel llamo a repaint(), y dibujo las lineas dentro de paintComponent(Graphics g).
He probado utilizando update(), pero sigue sin funcionar.
Gracias y un saludo.
Resulta que mi aplicación quiero que continuamente esté dibujando lineas, pero que no sobreescriba lo que ya ha dibujado. Es decir, si le digo que dibuje una linea, y ya hay otra dibujada en el panel, que no borre la anterior.
Actualmente, desde un JPanel llamo a repaint(), y dibujo las lineas dentro de paintComponent(Graphics g).
He probado utilizando update(), pero sigue sin funcionar.
Gracias y un saludo.
Hola!! No se como lo habrás programado pero yo lo que harÃa es ir guardando los parámetros necesarios en una clase llamada Linea e ir almacenandolas en un ArrayList( ó LinkedList, ...).
Dentro del método paintComponent(Graphics g) recorrerÃa el ArrayList obteniendo los parámetros de cada lÃnea y repintandola.
Espero que te haya ayudado.
Dentro del método paintComponent(Graphics g) recorrerÃa el ArrayList obteniendo los parámetros de cada lÃnea y repintandola.
Espero que te haya ayudado.
En primer lugar gracias por contestar.
Esa solución fue la primera que pensé, pero creo que puede ser una carga importante. Me gustarÃa saber si existe una manera de superponer la imagen, sin borrar lo que ya he dibujado.
Gracias.
Esa solución fue la primera que pensé, pero creo que puede ser una carga importante. Me gustarÃa saber si existe una manera de superponer la imagen, sin borrar lo que ya he dibujado.
Gracias.
Después de pensarlo, creo que otra solución es utilizar una ÚNICA clase llamada Lineas que hereda de JLabel e implemente Icon. En esta clase se guardarÃan los parámetros de todas las lÃneas (Icon->paintIcon(){ for(){ g.drawLine() }}).
En el método paintComponent de JPanel podrÃas utilizarlo para añadir nuevas lÃneas y a continuación almacenarla en la clase Lineas.
En el método paintComponent de JPanel podrÃas utilizarlo para añadir nuevas lÃneas y a continuación almacenarla en la clase Lineas.
Hola!!
Creo que si estás utilizando g.drawLine(); en cuanto se produzca un repintado si no refrescas las lÃneas van a desaparecer por lo que las soluciones que yo conozco se basan en la solución del anterior post. Yo no conozco una forma de dibujar (con g.drawLine()) sin sobreescribir lo que ya se ha dibujado (con g.drawLine()).
La solución más tÃpica es la de utilizar un Canvas(AWT):
http://www.dcc.uchile.cl/~lmateu/Java/Apuntes/awt.htm
http://www.sc.ehu.es/sbweb/fisica/cursoJava/applets/events/canvas1.htm
Otra solución pero que no es recomendable para lo que quieres hacer es utilizar una clase llamada Linea que herede de JLabel y que implemente la interfaz Icon.
Espero que te haya servido de ayuda.
Creo que si estás utilizando g.drawLine(); en cuanto se produzca un repintado si no refrescas las lÃneas van a desaparecer por lo que las soluciones que yo conozco se basan en la solución del anterior post. Yo no conozco una forma de dibujar (con g.drawLine()) sin sobreescribir lo que ya se ha dibujado (con g.drawLine()).
La solución más tÃpica es la de utilizar un Canvas(AWT):
http://www.dcc.uchile.cl/~lmateu/Java/Apuntes/awt.htm
http://www.sc.ehu.es/sbweb/fisica/cursoJava/applets/events/canvas1.htm
Otra solución pero que no es recomendable para lo que quieres hacer es utilizar una clase llamada Linea que herede de JLabel y que implemente la interfaz Icon.
Espero que te haya servido de ayuda.