🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #29484

Re: Necesito una applet de un contador

#29484
From: jj
Date: Tue, 16 Dec 1997 00:00
258 lines
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-mail
References: <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