Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import java.awt.image.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import java.io.File;
import org.jfree.chart.plot.*;
import java.io.*;
import java.applet.Applet;
import java.awt.*;
import javax.swing.JFrame;
import org.jfree.data.category.DefaultCategoryDataset;
public class GraficoSimpleLin extends JFrame
{
public static long Vfre[]= new long[18];
public static int i=0,j=0;
BufferedImage grafica = null;
//constructor
public GraficoSimpleLin()
{
super("Aprendiendo a Graficar con Robert");
}
public static BufferedImage creaImagen()
{
//XYSeries es una clase que viene con el paquete JFreeChart
//funciona como un arreglo con un poco mas de posibilidades
XYSeries series = new XYSeries("titulo de la serie");
//como su nombre lo indica el primer valor sera asignado al eje X
//y el segundo al eje Y
for(int cont=0;cont<33;cont++){
series.add(i, j);
i++;
j++;
}
//se crea un objeto XYDataset requerido mas adelante por el metodo que grafica
XYDataset juegoDatos= new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart ("Titulo del grafico",
"Eje X","Eje Y",juegoDatos,PlotOrientation.VERTICAL,
false,
false,
true // Show legend
);
//donde guardaremos la imagen?? pues en un bufer jeje
BufferedImage image = chart.createBufferedImage(400,400);
return image;
}
//public void repaint(java.awt.Graphics g)
public void paint(java.awt.Graphics g) //-----------------------------------------------------------------------------
{
super.paint(g);
if(grafica == null)
{
grafica = this.creaImagen();
}
g.drawImage(grafica,30,30,this);
//g.drawImage(grafica,30,30,null);
}
public static void main(String args[])
{
GraficoSimpleLin miventana = new GraficoSimpleLin();
miventana.setSize(450,450);
miventana.show();
while(true){
miventana = new GraficoSimpleLin();
miventana.setSize(450,450);
miventana.show();
i++;
j++;
try
{
Thread.sleep(1500);
}
catch (InterruptedException e)
{
}
}
}
}
Y por que no invocás a miventana.repaint() cada vez que querés redibujar la imagen?
import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import java.awt.image.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import java.io.File;
import org.jfree.chart.plot.*;
import java.io.*;
import java.applet.Applet;
import java.awt.*;
import javax.swing.JFrame;
import org.jfree.data.category.DefaultCategoryDataset;
public class GraficoSimpleLin extends JFrame
{
public static long Vfre[]= new long[18];
public static int i=0,j=0;
public static BufferedImage grafica = null;
//constructor
public GraficoSimpleLin()
{
super("Aprendiendo a Graficar con Robert");
}
public static BufferedImage creaImagen()
{
//XYSeries es una clase que viene con el paquete JFreeChart
//funciona como un arreglo con un poco mas de posibilidades
XYSeries series = new XYSeries("titulo de la serie");
//como su nombre lo indica el primer valor sera asignado al eje X
//y el segundo al eje Y
for(int cont=0;cont<33;cont++){
series.add(i, j);
i++;
j++;
}
//se crea un objeto XYDataset requerido mas adelante por el metodo que grafica
XYDataset juegoDatos= new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart ("Titulo del grafico",
"Eje X","Eje Y",juegoDatos,PlotOrientation.VERTICAL,
false,
false,
true // Show legend
);
//donde guardaremos la imagen?? pues en un bufer jeje
BufferedImage image = chart.createBufferedImage(400,400);
return image;
}
//public void repaint(java.awt.Graphics g)
public void paint(java.awt.Graphics g) //-----------------------------------------------------------------------------
{
super.paint(g);
if(grafica == null)
{
grafica = this.creaImagen();
}
g.drawImage(grafica,30,30,this);
//g.drawImage(grafica,30,30,null);
}
public static void main(String args[])
{
GraficoSimpleLin miventana = new GraficoSimpleLin();
miventana.setSize(450,450);
miventana.show();
while(true){
grafica = creaImagen();
miventana.repaint();
i++;
j++;
try
{
Thread.sleep(1500);
}
catch (InterruptedException e)
{
}
}
}
}
Por que invocás al método creaImagen tanto en el lazo del main como en el método paint() ????
import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import java.awt.image.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import java.io.File;
import org.jfree.chart.plot.*;
import java.io.*;
import java.applet.Applet;
import java.awt.*;
import javax.swing.JFrame;
import org.jfree.data.category.DefaultCategoryDataset;
public class GraficoSimpleLin extends JFrame
{
public static long Vfre[]= new long[18];
public static int i=0,j=0;
public static BufferedImage grafica = null;
//constructor
public GraficoSimpleLin()
{
super("Aprendiendo a Graficar con Robert");
}
public static BufferedImage creaImagen()
{
//XYSeries es una clase que viene con el paquete JFreeChart
//funciona como un arreglo con un poco mas de posibilidades
XYSeries series = new XYSeries("titulo de la serie");
//como su nombre lo indica el primer valor sera asignado al eje X
//y el segundo al eje Y
for(int cont=0;cont<33;cont++){
series.add(i, j);
i++;
j++;
}
//se crea un objeto XYDataset requerido mas adelante por el metodo que grafica
XYDataset juegoDatos= new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart ("Titulo del grafico",
"Eje X","Eje Y",juegoDatos,PlotOrientation.VERTICAL,
false,
false,
true // Show legend
);
//donde guardaremos la imagen?? pues en un bufer jeje
BufferedImage image = chart.createBufferedImage(400,400);
return image;
}
public void paint(java.awt.Graphics g) //-----------------------------------------------------------------------------
{
g.drawImage(grafica,30,30,this);
//g.drawImage(grafica,30,30,null);
}
public static void main(String args[])
{
GraficoSimpleLin miventana = new GraficoSimpleLin();
miventana.setSize(450,450);
miventana.show();
while(true){
grafica = creaImagen();
miventana.repaint();
i++;
j++;
try
{
Thread.sleep(1500);
}
catch (InterruptedException e)
{
}
}
}
}
Necesito mostrar un grafico xy en java, y actualizarlo cada 1 segundo. Hasta ahora se representar ese grafico, pero no se como hacer para actualizarlo.
¿Alguna idea?
Saludos.