Utilice Java para dibujar la biblioteca en la base de datos de SQL SERVER en un gráfico, similar a un stock con ejes XY y visualización de curvas. ¿Qué debo hacer?
Otro método es implementar la interfaz Runnable para la clase en tiempo real y agregar datos en tiempo real a TimeSeries a través de un bucle infinito en su método run(). El siguiente es un código de implementación más simple:
p>
Código Java
//RealTimeChart .NET Framework 3.5.0.
XYPlot;
importar org.jfree.data.time.TimeSeries;
importar org.jfree.data.time.TimeSeriesCollection
la clase pública RealTimeChart extiende ChartPanel; implementa Runnable
{
TimeSeries privado estático timeSeries
valor largo privado=0
public RealTimeChart( String chartContent,String title; ,String yaxisName)
{
super(createChart(chartContent,title,yaxisName));
}
JFreeChart estático privado createChart (String chartContent,String title,String yaxisName){
//Creando un objeto de gráfico de serie temporal
timeSeries = new TimeSeries (chartContent,Millisegundo.class); p>TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(timeSeries);
JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(título, "tiempo (segundos)",yaxisName,timeseriescollection,true,true,false
<); p> XYPlot xyplot = jfreechart.getXYPlot();XYPlot xyplot = jfreechart.getXYPlot();
>
// El rango de datos fijo del eje de datos es 30s
valueaxis.setFixedAutoRange(30000D);
valueaxis = xyplot.getRangeAxis(
// valueaxis.setRange(0.0D,200D); p>
return jfreechart;
}
public void run()
{
mientras (verdadero)
{ <
prueba
{
timeSeries.add(new Millisegundo( ), randomNum()
); Thread.sleep(300);
}
catch (InterruptedException e) { }
}
}
private long randomNum()
{
System.out.
println((Math.random()*280));
return (long)(Math.random()*280)
}
;}
}
}
//Test.java
importar java.awt.
* @param args
*/
public static void main(String[] args)
{
JFrame frame=new JFrame("Gráfico de prueba");
RealTimeChart rtcp=new RealTimeChart("Datos aleatorios", "Número aleatorio", "Numérico"); ", "Número aleatorio", "Numérico")getContentPane().add(rtcp,new BorderLayout().CENTER);
frame.pack();
frame.setVisible(true);
(new Thread(rtcp)).start();
frame.addWindowListener(new WindowAdapter()
{
público void windowClosing(WindowEvent windowevent)
{
System.exit(0);
})
}); >
}
}
}
. Un problema con estos dos métodos es que deben reescribirse cada vez que se implementa un gráfico, porque los datos en tiempo real no se pueden pasar a través de parámetros. Me pregunto si los datos en tiempo real se pueden pasar a través del método setXXX (). que la clase de dibujo de curvas en tiempo real se puede encapsular. Solo es necesario pasar algunos parámetros.