Article View: es.comp.lenguajes.java
Article #29484Re: Necesito una applet de un contador
From: jj
Date: Tue, 16 Dec 1997 00:00
Date: Tue, 16 Dec 1997 00:00
258 lines
9961 bytes
9961 bytes
Ramon escribi� en mensaje <01bd00e5$e8a9e100$2119e0c2@aula1.cece.es>...
> Necesito una applet de un contador de p�ginas en Java, si alguien me lo
>pudiese facilitar le estar�a enormemente agradecido.
>
Aqu� te mando el applet de un cuentakil�metros que podr�s modificar
f�cilmente y adaptarlo a lo que necesites.
Adem�s te mando una lista de direcciones con applets de inter�s que espero
te resulte util.
Adem�s dispongo de algunos tutoriales de Java, si los quieres p�demelos a la
direcci�n fresa@maptel.es . Pon en el asunto Para Dani.
Un saludo.
Applet del cuentakil�metros.
//
// Contador.java
// Copyright (c) 1996, Agustin Froufe
// Todos los derechos reservados.
//
// No se asume ninguna responsabilidad por el uso o alteracion de este
// software. Este software se proporciona COMO ES, sin garantia de ningun
// tipo de su funcionamiento y en ningun caso sera el autor responsable de
// da�os o perjuicios que se deriven del mal uso del software, aun cuando
// este haya sido notificado de la posibilidad de dicho da�o.
//
// Compilador: javac 1.0
// Autor: Agustin Froufe
// Creacion: 14-Sep-1996 16:33:10
//
//--------------------------------------------------------------------------
// Esta informacion no es necesariamente definitiva y est sujeta a cambios
// que pueden ser incorporados en cualquier momento, sin avisar.
//--------------------------------------------------------------------------
import java.awt.*;
import java.applet.Applet;
// Esta clase implementa un contador gr�fico, tipo cuentakil�metros de
// coche. Admite que se le pasen tres par�metros desde la llamada al
// applet en la p�gina html que lo incorpore, son:
// DIGITOS N�mero de d�gitos del contador
// INTERVALO Tiempo a transcurrir entre cada incremento
// VALOR_INICIAL Cifra inicial desde la que empieza a contar
// Utiliza un fichero que contiene las im�genes de los d�gitos y
// de ah� va extrayendo cada una de las figuras para componer el
// n�mero que tenga que representar en pantalla
//
public class Contador extends Applet implements Runnable {
Thread thread = null;
MediaTracker tracker = null;
Image numeros;
int numero_ancho = 15; // Pixels de ancho de cada uno de los numeros
int numero_alto = 20; // Pixels de alto de cada uno de los numeros
int digitos;
int intervalo;
String valor;
int estado = 0;
public void init() {
String parametro;
// Creamos un objeto mediatracker para soportar el contador
tracker = new MediaTracker( this );
try {
// Cargamos la imagen que contiene los numeros que vamos a
// presentar en el contador
numeros = getImage( getCodeBase(),"numeros.gif" );
tracker.addImage( numeros,0 );
// Numero de digitos de que consta el contador
parametro = getParameter( "DIGITOS" );
digitos = Integer.parseInt( parametro );
// Intervalo entre cada actualizacion del contador
parametro = getParameter( "INTERVALO" );
intervalo = Integer.parseInt ( parametro );
// Valor del contador cuando lo arrancamos
valor = getParameter( "VALOR_INICIAL" );
if( valor == null )
valor =
ing.valueOf(
(long)( Math.random() *
(long)( Math.pow( 10,digitos ) ) ) );
} catch( Exception e ) {
return;
}
// Ponemos el applet al tama�o m�s adecuado
resize( ( digitos * numero_ancho ),numero_alto );
// Creamos y arrancamos el thread que va a controla al
// contador
thread = new Thread( this );
thread.start();
}
public void stop() {
if( thread != null )
{
thread.stop();
thread = null;
}
}
// M�todo principal del thread, donde se llama a la funci�n de
// pintado, que es donde se componen las im�genes de los n�meros
// para reflejar la cifra por donde anda el contador
public void run() {
// Una vez que se ha cargado la imagen de los n�mero, seguimos
tracker.checkAll( true );
// repitamos y nos dormimos el intervalo de tiempo que se haya
// indicado
for( ;; )
{
repaint();
try {
Thread.sleep( intervalo );
} catch( InterruptedException e ) {
;
}
}
}
// Cuando se pulsa el rat�n, se para el contador y cuando se
// vuelva a pulsar, seguir� contando
public boolean mouseDown( Event e,int x,int y ) {
if( thread != null )
{
thread.stop();
thread = null;
}
else
{
thread = new Thread( this );
thread.start();
}
return true;
}
// Controlamos algunas teclas, para poder manipular el contador
public boolean keyDown( Event e,int key ) {
switch( key )
{
case '+': // Va m�s r�pido
intervalo -= 100;
if( intervalo < 10 )
intervalo = 10;
break;
case '-': // Va m�s lento
intervalo += 100;
break;
case '0': // Lo reseteamos
valor = String.valueOf( 0 );
estado = 0;
break;
default:
valor = String.valueOf(
(long)( Math.random() *
(long)( Math.pow( 10,digitos ) ) ) );
estado = 0;
break;
}
return true;
}
// Aqu� no borramos la pantalla, s�lo pintamos encima
public void update( Graphics g ) {
paint( g );
}
// Pintamos el n�mero
public void paint( Graphics g ) {
int i;
int digit;
boolean scroll;
if( tracker.checkAll() == false )
{
g.setColor( Color.black );
g.fillRect( 0,0,(digitos * numero_ancho),numero_alto );
return;
}
int zeros = digitos - valor.length();
for( i=0; i < zeros; i++ )
{
Graphics gc = g.create( i * numero_ancho,0,
numero_ancho,numero_alto );
gc.drawImage( numeros,0,0,this );
gc.dispose();
}
scroll = true;
for( i=valor.length() - 1; i >= 0;i-- )
{
digit = valor.charAt( i ) - '0';
Graphics gc = g.create( (zeros+i) * numero_ancho,0,
numero_ancho,numero_alto );
// Tenemos en cuenta cuando se va a cambiar de un n�mero
// a otro para ir mostrando la mitad del anterior y la primera
// mitad del siguiente para dar la sensaci�n de movimiento del
// display del contador
if( scroll )
{
switch( estado )
{
case 0:
if( digit == 0 )
gc.drawImage( numeros,0,
-( (9 * numero_alto) + numero_alto /
2 ),this );
gc.drawImage( numeros,0,
-( (digit * numero_alto) - numero_alto /
2 ),this );
break;
case 1:
gc.drawImage( numeros,0,
-(digit * numero_alto),this );
break;
case 2:
gc.drawImage( numeros,0,
-( (digit * numero_alto) + numero_alto /
2 ),this );
if( digit == 9 )
gc.drawImage( numeros,0,
-( (0 * numero_alto) - numero_alto /
2 ),this );
break;
}
}
else
gc.drawImage( numeros,0,-(digit * numero_alto),this );
gc.dispose();
if( digit != 9 )
scroll = false;
}
if( estado >= 2 )
{
estado = 0;
long l = Long.parseLong( valor );
l++;
valor = String.valueOf( l );
}
estado++;
}
}
//---------------------------------------- Final del fichero Contador.java
Direcciones de Applets.
http://www.javasoft.com/applets/applets.html
http://www.mindspring.com:82/~apollo/java/applets/effects/java.htm
NIzze�s Java Applets:
http://www-und.ida.liu.sef~d94nilhe/java/applets.html
Hostile Applets: http://www.math.gatech.edu/~mladue/HostileApplets.html
Java Applets ( sum.com ): http://java.sun.com/applets/index.html
Wavelet Cascade Applets: http://cm.bell-labs.com/cm/ms/who/wim/cascade/
NullPoint Presentation Applet for Java:
http://www.orbital.co.uk/java.html
Fantasy Baseball Applets:
http://games-espnet.sportzone.com/tour/applets/demodraft/index.html
Technical Details
Message-ID:
<675grt$mvf$1@talia.mad.ibernet.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<01bd00e5$e8a9e100$2119e0c2@aula1.cece.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,9150c6274b2c2267 X-Google-Attributes: gid1116f3,public From: "jj" <jj@d.com> Subject: Re: Necesito una applet de un contador Date: 1997/12/16 Message-ID: <675grt$mvf$1@talia.mad.ibernet.es> X-Deja-AN: 298647046 References: <01bd00e5$e8a9e100$2119e0c2@aula1.cece.es> X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 Organization: Unisource Espana NEWS SERVER Newsgroups: es.comp.lenguajes.java