Red de conocimiento informático - Programación de la red - ¿Quién tiene algún código de reloj de cuenta regresiva escrito en una aplicación Java?

¿Quién tiene algún código de reloj de cuenta regresiva escrito en una aplicación Java?

Categoría: Computadora/Red >> Programación >> Otros Lenguajes de Programación

Descripción del problema:

Es un reloj de cuenta regresiva como este: ingresa una hora como 120 La cuenta regresiva comienza después de que comienza el botón de minutos. Puede optar por hacer una pausa en el medio. Habrá un mensaje cuando quede 1 minuto.

Debe estar escrito en la aplicación. problemas, expertos.

Análisis:

paquete hola

import java.awt.*;

import java.applet.* ;

importar java.awt .event.*;

importar java.util.*;

importar java.awt.geom.*;

public class T extends Applet implements Runnable{

Thread tHour = null, tMinute = null, tSecond = null Representa el hilo de las manecillas de las horas, los minutos y los segundos

<; p> int hora_a, hora_b, minuto_a, minuto_b, segundo_a, segundo_b; Representa la manecilla de la hora, la variable entera del punto final del minutero y el segundero

int hora = 0, minuto = 0, segundo = 0; obtiene la variable entera de la hora actual

Dibuja la manecilla de hora, minuto y segundero Objeto gráfico

Gráficos g_segundo = nulo, g_minuto = nulo, g_hora = nulo ;

Una matriz que almacena escalas de marcación para usar cuando el puntero se mueve

double point_x[ ] = new double[61],point_y[] = new double[61];

Una matriz que almacena escalas de dial para dibujar diales

double scaled_x[] = new double[ 61],scaled_y[] = new double[61];

Variable para determinar si el subprograma se reinicia

int start_count = 0;

public void init (){

g_hour = this.getGraphics();

g_hour.setColor(Color.CYAN);

g_segundo = this.getGraphics();

g_segundo.setColor(Color.RED);

g_minuto = this.getGraphics();

g_minuto.setColor(Color.blue);

g_segundo.translate(200,200); Transforma el sistema de coordenadas y establece el origen del nuevo. sistema de coordenadas en (200, 200)

g_minuto.translate(200,200);

g_hour .translate(200,200);

point_x[0] = 0; point_y[0] = -120;Las coordenadas de posición de cada manecilla de hora a las 12 en punto (según las coordenadas del nuevo sistema de coordenadas)

scaled_x[0] = 0; -140; coordenadas de posición de escala a las 12 en punto (

Según las coordenadas del nuevo sistema de coordenadas)

double jiaodu = 6*Math.PI/180;

Divide el dial en 60 puntos y almacena las coordenadas de los puntos divisorios en la matriz

for(int i = 0; i < 60; i++){

point_x[i+1] = point_x[i]*Math.cos(jiaodu)-Math .sin(jiaodu) *punto_y[i];

punto_y[i+1] = punto_y[i]*Math.cos(jiaodu) + punto_x[i]*Math.sin(jiaodu); /p>

}

punto_x[60] = 0; punto_y[60] = -120;

for(int i = 0; i < 60; i++){

escalado_x[i+1] = escalado_x[i]*Math.cos(jiaodu)-Math.sin(jiaodu)*escalado_y[i];

escalado_y[i+1] ] = escalado_y[i ]*Math.cos(jiaodu) + Math.sin(jiaodu)*escalado_x[i];

}

escalado_x[60]= 0;

scaled_y[60] = -140;

}

public void start(){

Siempre que el subprograma se reinicie, primero cierre el hilo. y luego reinicie Comenzar a crear hilos

if(start_count >= 1){

tSecond.interrupt();

tMinute.interrupt();

tHour.interrupt();

}

tSecond = nuevo hilo(este);

tMinute = nuevo hilo(este);

tHora = new Thread(this);

tSecond.start();

tMinute.start();

tHour.start( );

start_count++;

if(start_count >= 2) start_count = 1;

}

public void stop()

{

tSecond.interrupt();

tMinute.interrupt();

tHour.interrupt();

}

pintura vacía pública (Gráficos g){

this.start();

g.drawOval(50,50,300,300);El exterior anillo del dial

g.translate(200,200);

Dibuja la escala pequeña y grande del dial

for(int i = 0; i < 60; i++){

if(i%5 == 0){

g.setColor(Color.BLACK);

g.fillOval( (int) escalado_x[i],(int)s

caled_y[i],10,10);

}

else

g.fillOval((int)scaled_x[i],(int)scaled_y[ i],5,5);

}

}

public void run(){

Obtener hora local

Fecha fecha = nueva Fecha();

String s=date.toString();

hora=Integer.parseInt(s.substring(11,13)) ;

minuto = Integer.parseInt(s.substring(14,16));

segundo = Integer.parseInt(s.substring(17,19));

if(Thread.currentThread() == tSecond){

segundo_a = (int)punto_x[segundo];

segundo_b = (int)punto_x[segundo];

g_segundo.drawLine(0,0,segundo_a,segundo_b);La posición inicial del segundero

g_segundo.drawString("segundo",segundo_a,segundo_b);

int i = segundo;

while(true){

prueba{

tSecond.sleep(1000);

Color c = getBackground();

g_segundo.setColor(c);

g_segundo.drawLine(0,0,segundo_a,segundo_b); Borrar el segundero del segundo anterior. con el color de fondo

g_segundo.drawString("segundo",segundo_a,segundo_b);

Si el segundero coincide con el minutero, restablece la visualización del minutero

if((segundo_a == minuto_a )&&(segundo_b == minuto_b)){

g_minuto.drawLine(0,0,minuto_a,minuto_b);

g_minuto .drawString("minuto",minuto_a,minuto_b);

}

Si el segundero coincide con la manecilla de la hora, restablece la visualización de la manecilla de la hora

if((segundo_a == hora_a)&&(segundo_b == hora_b)){

g_hora.drawLine(0,0,hora_a,hora_b);

g_hora.drawString(" hora",hora_a,hora_b);

}

}

catch(InterruptedException e){

Color c = getBackground() ;

g_segundo.setColor(c);

g_segundo.drawLine(0,0,segundo_a,segundo_b); Borrar el segundero con color de fondo

g_segundo .drawString("segundo",segundo

_a,segundo_b);

return;

}

El segundero avanza una unidad

second_a=(int)point_x[ ( i+1)%60];

second_b = (int)point_y[(i+1)%60]; Ir 6 grados por segundo (una celda unitaria)

g_segundo .setColor(Color.red);

g_segundo.drawLine(0,0,segundo_a,segundo_b);

g_segundo.drawString("segundo",segundo_a,segundo_b); p>

i++;

}

}

if(Thread.currentThread() == tMinute){

minuto_a = (int)punto_x[minuto];

minuto_b = (int)punto_y[minuto];

g_minuto.drawLine(0,0,minuto_a,minuto_b);

int i = minuto;

while(true){

La primera vez que pasen 60 segundos, avance un minuto, y luego cada 60 segundos avance uno minuto

p>

prueba{

tMinute.sleep(1000*60 - segundo*1000);

segundo = 0;

Color c = getBackground( );

g_minuto.setColor(c);

g_minuto.drawLine(0,0,minuto_a,minuto_b);

g_minuto. drawString("minuto" ,minuto_a,minuto_b);

if((hora_a == minuto_a)&&(hora_b== minuto_b)){

g_hora.drawLine(0,0, minuto_a, minuto_b);

g_hora.drawString("hora",hora_a,hora_b);

}

}

catch( InterruptedException e){

return;

}

minuto_a = (int)punto_x[(i+1)%60];

minuto_b = (int )punto_y[(i+1)%60];

g_minuto.setColor(Color.BLUE);

g_minuto.drawLine(0,0,minuto_a, minuto_b);

p>

g_minuto.drawString("minuto",minuto_a,minuto_b);

i++; segundo = 0;

}

}

if(Thread.currentThread() == tHora){

int h = hora%12;

hora_a = (int)punto_x [h*5 + minuto/ 12];

hora_b = (int)poi

nt_y[h*5 + minuto/12];

int i = h*5 + minuto/12;

g_hour.drawLine(0,0,hour_a,hour_b);

g_hour.drawString("hora",hora_a,hora_b);

while(true){

Avanzar después de 12 minutos% por primera vez Uno marque, luego avance un tic cada 12 minutos

intente{

tHour.sleep(1000*60*12 - 1000*60*(minuto%12) - segundo *1000);

minuto = 0;

Color c = getBackground();

g_hour.setColor(c);

g_hour. 0,0,hora_a,hora_b);

g_hour.drawString("hora",hora_a,hora_b);

}

catch(InterruptedException e ){

return;

}

hora_a = (int)punto_x[(i+1)%60];

hora_b = ( int)point_y[(i+1)%60];

g_hour.setColor(Color.CYAN);

g_hour.drawLine(0,0,hour_a,hour_b) ;

g_hora.drawString("hora",hora_a,hora_b);

i++;minuto = 0;

}

}

}

}