timerdemo.java

来自「全部代码全部在JDK中调试成功」· Java 代码 · 共 96 行

JAVA
96
字号
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

public class TimerDemo extends MIDlet {

    Display    display;
    StarField  field = new StarField();
    FieldMover mover = new FieldMover();
    Timer      timer = new Timer();

    public TimerDemo() {
        display = Display.getDisplay( this );
    }

    protected void destroyApp( boolean unconditional ) {
    }

    protected void startApp() {
        display.setCurrent( field );
        timer.schedule( mover, 100, 100 );
    }

    protected void pauseApp() {
    }

    public void exit(){
        timer.cancel(); // stop scrolling
        destroyApp( true );
        notifyDestroyed();
    }

    class FieldMover extends TimerTask {
        public void run(){
            field.scroll();
        }
    }

    class StarField extends Canvas {
        int        height;
        int        width;
        int[]      stars;
        Random     generator = new Random();
        boolean    painting = false;

        public StarField(){
            height      = getHeight();
            width       = getWidth();
            stars       = new int[ height ];

            for( int i = 0; i < height; ++i ){
                stars[i] = -1;
            }
        }

        public void scroll() {
            if( painting ) return;

            for( int i = height-1; i > 0; --i ){
                stars[i] = stars[i-1];
            }

            stars[0] = ( generator.nextInt() %
                                ( 3 * width ) ) / 2;
            if( stars[0] >= width ){
                stars[0] = -1;
            }

            repaint();
        }

        protected void paint( Graphics g ){
            painting = true;

            g.setColor( 0, 0, 0 );
            g.fillRect( 0, 0, width, height );

            g.setColor( 255, 255, 255 );

            for( int y = 0; y < height; ++y ){
                int x = stars[y];
                if( x == -1 ) continue;

                g.drawline( x, y, x, y );
            }

            painting = false;
        }

        protected void keypressed( int keycode ){
            exit();
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?