Foros del Web » Programación para mayores de 30 ;) » Java »

Graficas en tiempo real

Estas en el tema de Graficas en tiempo real en el foro de Java en Foros del Web. Necesito hacer para una practica una especie de simuldor de PID y lo estoy programando en java con un jframe en donde tengo distintos sliders ...
  #1 (permalink)  
Antiguo 05/05/2011, 13:33
 
Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 12 años, 11 meses
Puntos: 0
Graficas en tiempo real

Necesito hacer para una practica una especie de simuldor de PID y lo estoy programando en java con un jframe en donde tengo distintos sliders para obtener algunos parametros y tal, y despues necesito meter una grafica que vaya mostrando los datos "en tiempo real" y se vaya desplazando. Mi intencion era meterla dentro de un jpanel que tengo. Alguien me puede aconsejar sobre libreria a usar o como hacer esto porque estoy realmente perdido. Seria algo asi pero sin ser un applet :


www.chem.mtu.edu/~tbco/cm416/newpida.html


Gracias y a ver si me podeis dar unas guías para poder empezar a trabajar...
  #2 (permalink)  
Antiguo 09/05/2011, 16:09
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Graficas en tiempo real

hola Gonzalo tienes que utilizar Thread o la Interfaz Runnable para crear graficas en tiempo real

algo asi seria

Código Java:
Ver original
  1. SwingUtilities.invokeLater(new Runnable() {
  2.             public void run() {
  3.                 Thread performer = new Thread(new Runnable() {
  4.                     public void run() {
  5.                         actualizarGrafica();
  6.                     }
  7.                 }, "Performer");
  8.                 performer.start();
  9.             }

saludos
__________________
agradecer no cuesta nada
Entre más información proporciones más fácil será ayudarte, y asi evitar adivinar el problema con el que cuentas.
  #3 (permalink)  
Antiguo 09/05/2011, 20:45
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Graficas en tiempo real

Hola,

Cita:
Iniciado por sivadmp Ver Mensaje
hola Gonzalo tienes que utilizar Thread o la Interfaz Runnable para crear graficas en tiempo real
...
Técnicamente es mucho mas complejo que simplemente un Thread, recuerda que un Thread cualquiera no puede accesar ninguna función de AWT, porque este último no es multithreading, solamente el EventDispatchThread debe accesar los métodos de AWT.

Código Java:
Ver original
  1. SwingUtilities.invokeLater(new Runnable() {
  2.             public void run() {
  3.                 Thread performer = new Thread(new Runnable() {
  4.                     public void run() {
  5.                         actualizarGrafica();
  6.                     }
  7.                 }, "Performer");
  8.                 performer.start();
  9.             }

Dependiendo de lo que esté dentro de actualizarGrafica, da lo mismo que hacerlo sin un Thread independiente, puesto que invokeLater usa el hilo de EventDispatchThread para ejecutar el contenido del método run, aunque lo haga hasta que tenga tiempo. En otras palabras si en actualizarGrafica hay un ciclo infinito que pinta la imagen conforme se va generando, esta va a bloquear completamente la aplicación para siempre o va a ralentizar la aplicación demasiado tiempo.

Código Java:
Ver original
  1. public void actualizarGraphica() {
  2.   while(true) {
  3.     .. calcSomething ...
  4.     .. drawSomething ...
  5.     // thread consuming all slices of time events
  6.     // of the EventDispatchThread
  7.   }
  8. }

La forma de hacer un aplicación que pinta imágenes y realiza cálculos al mismo tiempo es a través de eventos (Listeners), un hilo hace los cálculos y cuando esté ya tiene parte del resultado genera un evento (fireEvent...) y otro hilo, el EventDispatchThread, está escuchando o esperando por los eventos (addEventListener), porque solamente este debe pintar en la ventana. De esta forma se mantiene la aplicación responsiva a los eventos, se pueden presionar botones y sigue funcionando todo correctamente.

Saludos,

Última edición por HackmanC; 09/05/2011 a las 21:02 Razón: edición

Etiquetas: real, graficos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:28.