Código fuente de la aplicación despertador
importar java.awt.*;
importar java.applet.*;
importar java.text.*;
La clase pública AlarmClock extiende Applet para implementar Runnable
{
Temporizador de subproceso = null//Crear temporizador de subproceso
Reloj de imagen, gif1, gif2, reloj 6, reloj 7; //clockp: carcasa del despertador, despertador y pájaro.
int s, m, h, hh;
AudioClip ipAu, peligro, chirrido
boolean canPaint = true
Bandera booleana = false;
taque booleano = verdadero
int contador = 0;
int dura
Imagen fuera de pantalla _ buf = nulo p>
int dura
p>
int i, j, t = 0;
int tiempo de espera = 166
int lastxs; =0, lastys=0, lastxm=0, lastym=0, lastxh=0, lastyh = 0;
Fecha ficticia = new Date() //Generar objeto de datos
Calendario gregoriano cal = nuevo calendario gregoriano();
formato de fecha simple df = nuevo formato de fecha simple(" aaaa MM DD HH:MM:ss "); //Establece el formato de hora
string last date = df format(dummy);
p>Fuente F = new Font("TimesRoman", font.plain, 14 //Establecer formato de fuente
Fecha dat = null
Fecha horaAhora = null
Color fgcol = Color.blue
color fg col 2 = color gris oscuro;
Panel de configuración del panel;
Color backcolor = Color.pink
TextField showhour, showmin, showsec, sethour, setmin, setsec//Muestra el cuadro de texto de la hora actual y el texto programado caja.
Botón encendido;
Botón apagado;
Etiqueta hlabel1, mlabel1, slabel1, hlabel2, mlabel2, slabel2 // Etiqueta utilizada al mostrar unidades de tiempo ( horas, minutos, segundos).
Información de etiqueta 1 = nueva etiqueta ("Bienvenido al despertador"), info2 = nueva etiqueta (" "); Nota de etiqueta 1 = nueva etiqueta ("Hora actual: "), note2 = nueva etiqueta ("Configuración del despertador:");
boolean setalerm=false, clickflag = false//Determina si sonará o vibrará.
int fixh=0, fixm=0, fixs = 0; //Registra la hora de la alarma
Public void init()//Método de inicialización
{
Entero gif _ número
int fieldx=50, fieldy1=120, fieldy2=220, fieldw=30, fieldh=20, space = 50//Mostrar cuadro de texto de tiempo y temporización parámetros de posicionamiento.
set layout(null); //Inicializa el administrador de diseño en nulo.
establecer panel = nuevo panel();
establecer panel .establecer diseño(nulo);
establecer panel . >
setpanel.add(nota 2);
note1.setBounds(30, 100, 60, 20);
nota 1. establecer fondo (color de fondo);
nota 1. establecer primer plano(color. negro);
nota2.setBounds(30, 180, 60, 20);
nota 2. establecer fondo( color de fondo);
nota 2. set foreground(color . negro);
hlabel 1 = nueva etiqueta();
mlabel 1 = nueva etiqueta( );
slabel 1 = nueva Etiqueta();
hlabel 2 = nueva Etiqueta();
ml Abel 2 = nueva Etiqueta(); p>
p>
slabel 2 = new Label();
//Muestra el cuadro de texto de la hora actual.
showhour=new TextField("00 ", 5);
showmin=new TextField("00 ", 5);
showsec=new TextField( "00 ", 5);
//Cuadro de texto para el tiempo (hora, minuto, segundo)
sethour=new TextField("00 ", 5);
p>
setmin=new TextField("00",5);
setsec=new TextField("00",5);
//El actual Ubicación y tamaño del cuadro de texto de hora.
establecer panel . add(mostrar hora);
mostrar hora.setBounds(fieldx, fieldy1, fieldw, campo h);
mostrar fondo (. color . white);
//Agrega la unidad "cuando" después del cuadro de texto.
establecer panel . add(hlabel 1);
hlabel 1 . settext(" cuando ");
hlabel 1. establecer primer plano (color. negro);
hlabel 1. establecer límites (campo x+campo w+3, campoy1, 14, 20);
fieldx = fieldx+space;
//La posición y el tamaño del cuadro de texto de minutos de la hora actual.
establecer panel . add(mostrar min);
showmin.setBounds(fieldx, fieldy1, fieldw, campo h);
mostrar establecer fondo ( color . white);
//Agrega la unidad "minutos" después del cuadro de texto.
establecer panel . add(mlabel 1);
mlabel 1 . settext(" puntos ");
mlabel 1 .
mlabel 1. establecer primer plano (color. negro);
mlabel 1. establecer límites (campo x+campo w+3, campoy1, 14, 20);
fieldx = fieldx+space;
//La posición y el tamaño del segundo cuadro de texto en el momento actual.
establecer panel . add(mostrar seg);
showsec.setBounds(fieldx, fieldy1, fieldw, campo h);
mostrar establecer fondo ( color . white);
//Agrega la unidad "segundos" después del cuadro de texto.
establecer panel. add(slabel 1);
Slabel1.setText("segundos");
establecer fondo (color de fondo);
etiqueta 1. establecer primer plano(color. negro);
etiqueta 1. establecer límites(campo x+campo w+3, campoy1, 14, 20);
fieldx = 50
//La posición y el tamaño del cuadro de texto de la hora programada
set panel. fieldx, fieldy2, fieldw, field h);
sethour. set background(color. white);
//Agrega la unidad "cuando" después del cuadro de texto.
establecer panel . add(HL Abel 2);
hlabel 2 . settext(" cuando ");
hlabel 2 . ;
hetiqueta 2. establecer primer plano(color . negro);
hetiqueta 2. establecer límites(campo x+campo w+3, campo 2, 14, 20); p>
hlabel 2. p>
fieldx = fieldx+space;
//La posición y el tamaño del cuadro de texto de los minutos de sincronización
set panel add(. setmin);
setmin.setBounds(fieldx, fieldy2, fieldw, campo h);
setmin.set background(color. white);
// Agregue la unidad "minutos" después del cuadro de texto.
establecer panel . add(ml Abel 2);
mlabel 2 . settext(" puntos ");
ml Abel 2 . );
ml Abel 2. establecer primer plano (color . negro);
mlabel 2. establecer límites (campo x+campo w+3, campo 2, 14, 20);
fieldx = fieldx+space;
//La posición y el tamaño del cuadro de texto de segundos de tiempo
set panel . >
setsec.setBounds(fieldx, fieldy2, fieldw, field h);
setsec.set background(color. white);
//Agrega la unidad "segundos" después del cuadro de texto ".
establecer panel. add(slabel 2);
Slabel2.setText("segundos");
establecer fondo (color de fondo);
etiqueta 2. establecer primer plano (color. negro);
etiqueta 2. establecer límites (campo x+campo w+3, campo 2, 14, 20);
//Configurar botón de control del despertador (encendido, apagado)
Botón On =Nuevo botón (" on ");
Botón Off = Nuevo botón (" off ");
p>
añadir (botón de activación);
panel de configuración .
botón de activación.setBounds(90, 180); , 40, 20);
offbutton.setBounds(140, 180, 40, 20);
//Agrega algunas etiquetas de información adicional (encabezado, pie de página)
establecer panel .add(info 1);
info 1 .
info1 .setBounds(50, 50, 150, 20);
establecer panel .add(info 2);
establecer fondo (color de fondo); /p>
info 2. set foreground(color. blue);
info2.setBounds(150, 280, 100, 20);
//Añadir el panel a el contenedor actual y establezca el tamaño del panel y el color de fondo.
add(establecer panel);
setpanel.setBounds(300, 1, 250, 420);
establecer fondo (color de fondo);
//Obtener el archivo de sonido
ipau = getaudiolip(getdocumentbase(), "bells/xianjian . mid));
danger = getAudioClip(getDocumentBase( ) , "campanas/0 . mid));
chirp = getAudioClip(getDocumentBase(), "campanas/3 . mid");
int xcenter, ycenter, s, m , h;
xcentro = 145;
y centro = 162
s=(int)cal.get(calendario.segundo);
m=(int)cal.get(calendario.minuto);
h=(int)cal.get(calendario.
hora del día);
//Inicializar posición del puntero
último xs =(int)(math . cos(s * 3.14f/30-3.14f/2)* 30 +xcenter);
lastys =(int)(math . sin(s * 3.14f/30-3.14f/2)* 3y center);
lastxm =( int)(math . cos(m * 3.14f/30-3.14f/2)* 25+xcenter);
lastym =(int)(math . sin(m * 3.14f/30-3.14 f/2)* 25+y centro);
último xh =(int)(matemáticas. cos((h * 3m/2)* 3.14f/180-3.14f/2)* 18+xcenter);
lastyh =(int)(math . sin((h * 3m/2)* 3.14f/180-3.14f/2)* 18+y center);
lasts = s;
media tracker mt = new media tracker(this); //Crear objeto Tracke
reloj p = getimage(getdocumentbase()," Casual.png");
gif 1 = getImage(getDocumentBase(), "gif 1 . gif");
gif2 = getImage(getDocumentBase(), "gif 2 . gif ));
reloj 6 = getImage(getDocumentBase(), " reloj 6 . gif ");
reloj 7 = getImage(getDocumentBase(), " reloj 7 . gif "); ;
mt.addImage(clockp,i++);
mt.addImage(gif1,i++);
mt.addImage(gif2,i++);
mt.addImage(clock6,i++);
mt.addImage(clock7,i++);
Intenta { mt . excepción e){ }; //Espera a que se complete la carga.
Ajustar tamaño (600, 420); //Establecer el tamaño de la ventana
}
Pintura de vacío público (Gráficos g){// Anular la pintura ( ) método .
int xh, yh, xm, ym, xs, ys, strike _ times
int xcenter, ycenter
Cadena de hoy;
Entero gif_número
xcenter = 148;
y center = 186
dat = nueva fecha(); .settime(dat);
//Leer la hora actual
s=(int)cal.get(calendar.segundo);
m =( int)cal.get(calendario.minuto);
h=(int)cal.get(calendario.
hora del día);
hoy = df format(dat);
//Posición del puntero
xs = (int)(math . cos( s * 3.14f/30-3.14f/2)* 3xcenter);
ys =(int)(matemáticas . sin(s * 3.14f/30-3.14f/2)* 3 y centro);
XM =(int)(math . cos(m * 3.14f/30-3.14f/2)* 25+xcenter);
ym =(int )(matemáticas . sin(m * 3.14f/30-3.14f/2)* 25+y centro);
xh =(int)(matemáticas . cos((h * 3m/2 )* 3.14f/180-3.14f/2)* 18+xcenter);
yh =(int)(matemáticas . sin((h * 3m/2)* 3.14f/180- 3.14f/2)* 18+y center);
//Establecer fuente y color
g set font(F)
g . color(fg col);
g. establecer color(fg col 2);
g establecer color(obtener fondo());
g. fillRect(1, 1, 634, 419);
g.drawImage(relojp, 75, 110, esto);
g.drawImage(reloj 6, 83, 280, esto); ) );
g . establecer color(fg col 2);
g establecer color(obtener fondo()); fg col 2);
//Los números muestran el año, mes, día y hora.
g . cordón (hoy 55415);
g.drawLine(xcenter, ycenter, xs, ys);
g. ;
//Puntero de dibujo
g.drawLine(xcenter, ycenter-1, xm, ym);
g.drawLine(xcenter-1, ycenter , xm, ym);
g.drawLine(xcenter, ycenter-1, xh, yh);
g.drawLine(xcenter-1, ycenter, xh, yh) ;
lastxs = xslastys = ys
lastxm = xhlastym = ym
lastxh = xhlastyh = yh
última fecha = hoy;
p>
if(h & lt; 12)hh = h; //Convierte la hora del sistema al rango de 0-11.
else hh = h-12;
if(hh == 0)strike _ times = 12; //Calcula el número de horas.
else strike _ times = hh
if((s == 0 & amp; & ampM==0)||flag){//Determina si es puntual y si actualizar activamente.
if(counter & lt; strike_times){
flag = true
g.drawImage(gif2, 115, 35, esto
);if (continua!=s){
if (strike){
counter++;
peligro play() // Toca la alarma. tono
}
if(strike)strike = false
si no strike = true
}
}
En caso contrario {
contador = 0
bandera = false
}
}
Otros
g.drawImage(gif1, 115, 35, this);
int timedelta//Registra la diferencia horaria entre la hora actual y la hora de la alarma.
Entero curr, currm, currs // registra la hora, minuto y segundo actuales respectivamente.
hora ahora = nueva fecha();
currh = nuevo entero(hora ahora. obtener horas()); . get minutes());
currs = new Integer(time now . get segundos());
//Determina si se actualiza la hora que se muestra actualmente para evitar cuadros de texto frecuentes. las apariencias destellan.
if(currh.intValue()!= entero . valor de(mostrar hora . gettext()).intValue())
mostrar hora . );
if(currm.intValue()!= entero . valor de(show min . gettext()).intValue())
show min . ());
if(currs.intValue()!= entero. valor de(showsec. gettext()).intValue())
showsec(currh. tostring. ());
If(setalerm){ //Determina si la alarma está activada.
//Determina si la hora actual es la hora establecida por el despertador.
if((currh . int value()= = fixh)& amp;& amp(currm . int value()= = fixm)& amp;& amp(currs.intValue()==arreglos ))
clickflag = true
delta de tiempo = currm .int value()* 6currs .int value()-fixm * 60-fixs;
chirp play();
p>g.drawImage(reloj 7, 83, 280, esto);
}
De lo contrario {
chirrido . );
clickflag = false
}
}
if (¡continuo!=s)
ipau . play( ); //Reproducir ticks
last = s;
if(canPaint){
t+= 1; if( t = = 12)t = 0;
}
canPaint = false
dat = null
}
public void start(){
if(timer==null){
timer = nuevo hilo (este); // Crea una instancia del temporizador.
temporizador .start();
}
}
Sitio público vacío(){
temporizador = null
}
Ejecución de anulación pública(){
while(timer!=null){
Prueba {timer .sleep (timeout);}catch(excepción de interrupción e){}
canPaint = true
repaint(); //Actualiza la pantalla
} p >
timer = null
}
El método public void Update(Graphics g){//Update() que utiliza tecnología de doble almacenamiento en búfer.
if(offscreen_buf==null)
offscreen_buf=createImage(600, 420);
gráficos apagados = fuera de la pantalla _ buf .
offg.clipRect(1, 1, 599, 419);
Pintura (gases de escape);
gráficos ONG = obtener gráficos(); p >
ong.clipRect(1, 1, 599, 419);
ong.drawImage(offscreen_buf, 0, 0, esto);
Acción booleana pública (evento evt, objeto arg){//Manejador de eventos de botón.
if (instancia de destino del evento de botón){
String lable =(String)arg;
If (if(lable.equals ("on") ) {
setalerm = true
//Obtener la hora de entrada
fixh = integer . p>fixm = valor entero de(setmin. gettext()). int valor();
arreglos = valor entero de(setsec. gettext());
}
If (if(lable.equals ("off")) {
setalerm = false
if (chirp!=null)
chirp stop();
clickflag = false
}
Devuelve verdadero
}
Devuelve falso
}
}