Utilice Java para dibujar la pila en la base de datos de SQL SERVER en forma tabular, similar al eje XY y la visualización de la curva de las acciones. ¿Cómo hacerlo?
Otro método es implementar la interfaz Runnable de la clase en tiempo real y, en su método run(), agregar datos en tiempo real a TimeSeries a través de un bucle infinito. El siguiente es un código de implementación relativamente simple:
Código Java
//RealTimeChart.
Lenguaje Java (un lenguaje informático, especialmente utilizado para crear sitios web)
Importar org.jfree.chart.chart factory;
Importar org.jfree.chart.chart panel;
p>
Importar org.jfree.chart.jfreechart;
Importar org.jfree.chart.axis.eje de valores;
Importar org.jfree.chart .plot.xy gráfico;
Importar org.jfree.data.time.millisegundos;
Importar org.jfree.data.time.time series;
Importar datos org.jfree. tiempo. colección de series temporales;
La clase pública RealTimeChart extiende ChartPanel e implementa Runnable
{
Serie temporal estática privada;
Valor largo privado = 0;
realTimeChart público (String chartContent, String title, String yaxisName)
{
super(createChart( chartContent, title, yaxisName));
}
JFreeChart estático privado crear gráfico (Contenido del gráfico de cadenas, Título de cadena, String yaxisName){
//Crear Objeto de gráfico de secuencia
serie temporal = nueva serie temporal (contenido del gráfico, milisegundos. clase);
colección timeSeries colección timeSeries = nueva colección timeSeries (serie temporal);
jfreechart jfreechart = fábrica de gráficos. createtimeserieschart(título, "Tiempo (segundos)", nombre del eje Y, colección de series de tiempo, verdadero, verdadero, falso);
xy plot xy plot = jfreechart plot(. );
//Configuración de coordenadas verticales
ValueAxis ValueAxis = xy plot.
//Establece automáticamente el rango de datos del eje de datos
eje de valor . setautorange(true);
//Eje de datos rango de datos fijo 30s
eje de valor setfixedautorange(30000d);
eje de valor = xy plot.getrangeaxis();
//valueaxis.setRange(0.0D, 200d);
Devolver jfreechart
}
public void run()
{
mientras(verdadero)
{
intentar
{ p>
timeSeries.add(new milisegundos(), num aleatorio());
thread sleep(300);
}
.}
p>
catch (InterruptedException e) { }
}
}
Numador aleatorio largo privado()
{ p>
sistema . println((math . random()* 280));
return(long)(math . random()* 280);
}
}
//Test.java
Importar Java . . evento. adaptador de ventana;
Importar Java. awt. evento de ventana;
Importar javax.jframe;
examen del curso público. >
{
/**
* @param args
*/
Public static void main(String[] args)
{
JFrame frame=new JFrame("gráfico de prueba");
Gráfico en tiempo real RTCP = nuevo gráfico en tiempo real("aleatorio data"," "Número aleatorio", "Valor");
frame.getContentPane(). add(rtcp, new BorderLayout(). center);
frame .
frame set visible(true); (rtcp)). start();
frame.addWindowListener(new WindowAdapter()
{
cierre de ventana vacía pública (evento de ventana evento de ventana)
{
sistema . salida(0);
}
});
}
}
Ambos métodos tienen un problema, es decir, deben reescribirse cada vez que se implementa un gráfico, porque no se pueden pasar datos en tiempo real a través de parámetros. Me pregunto si es posible pasar en tiempo real. -datos en tiempo a través de setXXX(), por lo que puede encapsular la clase de dibujo de curvas en tiempo real y solo pasar algunos parámetros.