Cómo hacer gráficos
Al escribir un subprograma Java para dibujar K-Line, hay varias cuestiones clave que deben resolverse, a saber, 1) el uso de subprocesos múltiples 2) la elección; del administrador de diseño; 3) Aplicación de flujos de entrada y salida de datos y 4) Configuración y monitoreo de eventos de mouse y teclado;
A continuación se utiliza un ejemplo para explicar todo el proceso y método de programación en detalle.
Primero, utilice subprocesos múltiples
Un subprograma de Java completo contiene cuatro métodos, Init(), Start(), Stop(), Destroy() (es decir: inicialización, inicio, detener, borrar), constituye un ciclo de vida completo y su secuencia de operación también es una secuencia de ejecución de arriba hacia abajo.
En el proceso de dibujar el gráfico de líneas K, además de dibujar la tabla y los rectángulos yin y yang que representan el ascenso y la caída de la acción, también debes dibujar un cursor "cruz" que se puede mover libremente. mientras escucha los eventos del mouse, posicione y muestre el valor del precio diario de las acciones recuperadas (como el precio de apertura, el precio de cierre, etc.), el gráfico de líneas K debe dibujarse en secuencia. En este momento, para evitar el parpadeo y reducir el tiempo de espera para volver a calcular, excepto para volver a dibujar el cursor "cruz" que se mueve con el mouse, el diseño de la página y los rectángulos yin y yang no se vuelven a dibujar; de subprocesos múltiples para completar la tarea.
1. Algunos conceptos básicos sobre subprocesos múltiples:
El subproceso múltiple es en realidad el inicio de otro proceso. Se ejecuta independientemente del programa principal y está controlado por Start(). El método del programa principal se carga mediante la llamada al método Run(). Hay dos formas de implementar subprocesos múltiples, a saber: crear una subclase de la clase Thread (herencia de clase) e implementar una interfaz ejecutable.
Para facilitar su uso, Java encapsula todas las funciones relacionadas con subprocesos en una clase en la biblioteca de clases de Java: Java.lang.Thread. Java usa esta clase para crear, controlar y finalizar subprocesos, y completar Todo. operaciones relacionadas con subprocesos múltiples.
En el lenguaje Java, una subclase solo puede heredar una superclase (clase principal). Dado que el subprograma de Java que escribimos se usa en páginas web, primero debe heredar la clase del navegador (java.applet); , en este ejemplo implementamos subprocesos múltiples implementando el método de interfaz ejecutable, y la declaración de implementación es la siguiente:
clase pública StockApplet extiende java.applet.Applet implementa Runnable
2 Aplicación multiproceso:
Primero, cree un hilo (M_pointThread) en el método Init() para su definición e inicialización:
Thread M_pointThread=null; > Luego, agregue el siguiente código en los métodos Start() y Stop():
//Cuando abra la página del navegador para comenzar a cargar el código del Applet Java, ejecute el método start()
public void start()
{
if (M_pointThread==null) //si el hilo aún no se ha generado
{
M_pointThread=new Thread(this); //luego crea un nuevo hilo
M_pointThread.pointThread.start(); //inicia el hilo
}
}
El método stop() se llama cuando la página actual se cierra o la página se mueve a otra página web
public void stop()
{
if (M_pointThread!=null)
// Si el hilo aún se está ejecutando
{
M_pointThread .stop();
// Detener el hilo
M_pointThread=null;
// Liberar los recursos ocupados por el hilo
}
}
3. Escribe el código de ejecución del hilo:
public void run()
{
M_graphics=getGraphics();
M_graphics.white);
// Utilice el método equivalente para dibujar el cursor "cruz"
while(true)
{
try
{
if( MouseMove==true) //Detecta el movimiento del mouse y
ejecute el siguiente código
{ / /ejecute la línea: ejecute una operación de dibujo lineal (diseño de subprograma Java) cuando el mouse esté ubicado en la siguiente área
p>
if(x0 gt; 50 amp; amp; x0 lt; 600) { M _graphics.drawLine
(x0, 30, x0, 380);}
if(y0 gt; 30 amp; y0 lt; 380){M _gr
aphics.drawLine
(50,y0,600,y0);}
if(X gt; 50 amp; amp; X lt; 600){M_graphics.drawLine
(X, 30, X, 380);}
if(Y gt; 30 amp; amp; ,Y,600,Y);}.
MouseMove=fase;
x0=X; // Pasar los parámetros de coordenadas actuales
y0=Y
}< / p>
}catch(NullPointerException npe){}
//Captura posibles excepciones
}
II. p> Cuando se está ejecutando el subprograma de Java en este ejemplo, se deben dibujar las "etiquetas" correspondientes en la página en el área de ejecución del subprograma de Java para mostrar diferentes valores y se debe agregar un "cuadro de texto". El "cuadro de texto" se utiliza para recibir el símbolo bursátil ingresado. La configuración de posición y tamaño de estas "etiquetas" y "cuadros de texto" pertenecen a la gestión del diseño de la aplicación.
El lenguaje Java proporciona una variedad de administradores de diseño: diseño de borde, diseño de tarjeta, diseño de proceso, diseño de cuadrícula, etc. Cada diseño tiene características diferentes y se puede seleccionar según las necesidades reales, pero hay uno; La mayor libertad de espacio de diseño es "sin administrador de diseño", es decir, no se utiliza ningún formato de diseño y no se puede utilizar el administrador de diseño. Pero el espacio de diseño más libre es "sin administrador de diseño", es decir, sin utilizar ningún formato de diseño, sino agregando componentes manualmente a la posición absoluta del diseño de página. En este caso se utiliza "sin administrador de diseño".
Cuando utilice "sin administrador de diseño", primero debe declararlo, es decir:
setLayout(null
Luego use reshape(); método para especificar el componente La posición y el tamaño exactos.
La declaración básica es la siguiente:
Label label1=new Label()
/ Define label;
this .add(label1);
/ Agrega la etiqueta al administrador de diseño
label1.reshape(10, 10, 30, 30); /p>
// Dibuja la etiqueta en la posición especificada para dibujar la etiqueta
Para varias etiquetas y cuadros de texto, simplemente agrégalos de acuerdo con este formato.
3. Flujo de datos de entrada y salida
El subprograma de Java que se ejecuta en el navegador del cliente necesita leer datos de acciones relevantes del servidor para crear gráficos, lo que implica el uso de flujos de datos de Java.
El paquete Java.io proporciona múltiples clases para intercambiar información con varios dispositivos de E/S. Las dos clases más importantes son la clase de flujo de entrada (InputStream) y la clase de flujo de salida (OutputStream).
Para facilitar la implementación, en este ejemplo, primero ingresamos los campos relevantes en la base de datos de stock del lado del servidor (como: show128.dbf) y luego convertimos estos campos en un flujo de entrada.
dbf) se escribe en un archivo de texto (el formato es: la primera línea es el nombre en caracteres chinos de la acción, y luego cada línea incluye: fecha de apertura, precio de apertura, precio más alto, precio más bajo, precio de cierre, volumen de negociación), y el código estándar como nombre de archivo (como 600001.txt), luego use un subprograma de Java para leer datos del archivo de texto en el lado del servidor. De esta manera, el acceso a la base de datos del lado del servidor se convierte en operaciones de E/S en el archivo. La declaración de implementación es la siguiente:
URL urlc=new URL("pub\wwwroot\), open. el navegador, en la dirección Ingrese .* en la columna;
clase pública StockApplet extiende java.applet.
{ // La siguiente es la parte de declaración de las variables de uso común p>
int Move_Length=0, Move_Sum=0
String FileName, Name_Str, Content_Date
int SP[]=new int[2000];
int KP[]=nuevo int [2000];
int JD[]=nuevo int[2000]
int JG[]=nuevo int[2000];
int Mid_Worth[ ]=new int[2000];
String myDate[]=new String[2000]
double CJL[]=new double; [2000];
doble MaxCJL, MidCJL;
Etiqueta de etiqueta[]=nueva etiqueta[10];
int MaxWorth, MinWorth;
int x_move0, x_move1, MaxLength= 0;
int x0, y0,
public void init()
{
TextField text1=new TextField();
Thread M_pointThread=null;
setLayout(null); //Declarar el administrador de diseño
this.setBackground( null)p> this.setBackground(Color.white); //Establece el color de fondo
this.setForeground(Color.black); // Establece el color del texto
for( int i=1; i lt; 10; i) // El siguiente bucle se utiliza para agregar una etiqueta al diseño Agregar etiqueta
{
label[i]=new Label ();
this.add(label[i]);
this .setForeground(Color.black);