⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagesequencetimer.java

📁 初期JAVA学习非常有用的资料。帮助深入了解API。特别是Applet。
💻 JAVA
字号:
/* * Swing version. */import javax.swing.*;import java.awt.*;import java.awt.event.*;/*  * This applet displays several images in a row.  However, * it doesn't wait for the images to fully load before drawing * them, which causes the weird effect of the animation appearing * from the top down. */public class ImageSequenceTimer extends JApplet                                 implements ActionListener {    ImageSQPanel imageSQPanel;    static int frameNumber = -1;    int delay;    Thread animatorThread;    static boolean frozen = false;    Timer timer;    //Invoked only when this is run as an applet.    public void init() {        //Get the images.        Image[] images = new Image[10];        for (int i = 1; i <= 10; i++) {            images[i-1] = getImage(getCodeBase(), "images/T"+i+".gif");        }        buildUI(getContentPane(), images);        startAnimation();    }         //Note: Container must use BorderLayout, which is the     //default layout manager for content panes.    void buildUI(Container container, Image[] dukes) {        int fps = 10;        //How many milliseconds between frames?        delay = (fps > 0) ? (1000 / fps) : 100;        //Set up a timer that calls this object's action handler        timer = new Timer(delay, this);        timer.setInitialDelay(0);        timer.setCoalesce(true);        imageSQPanel = new ImageSQPanel(dukes);        container.add(imageSQPanel, BorderLayout.CENTER);         imageSQPanel.addMouseListener(new MouseAdapter() {            public void mousePressed(MouseEvent e) {                if (frozen) {                    frozen = false;                    startAnimation();                } else {                    frozen = true;                    stopAnimation();                }            }       });    }    public void start() {        startAnimation();    }    public void stop() {        stopAnimation();    }    public synchronized void startAnimation() {        if (frozen) {             //Do nothing.  The user has requested that we             //stop changing the image.        } else {            //Start animating!            if (!timer.isRunning()) {                timer.start();            }        }    }    public synchronized void stopAnimation() {        //Stop the animating thread.        if (timer.isRunning()) {            timer.stop();        }    }    public void actionPerformed(ActionEvent e) {        //Advance the animation frame.        frameNumber++;        //Display it.        imageSQPanel.repaint();    }    class ImageSQPanel extends JPanel{        Image dukesWave[];        public ImageSQPanel(Image[] dukesWave) {            this.dukesWave = dukesWave;        }        //Draw the current frame of animation.        public void paintComponent(Graphics g) {            super.paintComponent(g); //paint background            //Paint the frame into the image.            try {                g.drawImage(dukesWave[ImageSequenceTimer.frameNumber%10],                            0, 0, this);            } catch (ArrayIndexOutOfBoundsException e) {                //On rare occasions, this method can be called                 //when frameNumber is still -1.  Do nothing.                return;            }        }    }    //Invoked only when this is run as an application.    public static void main(String[] args) {        Image[] waving = new Image[10];        for (int i = 1; i <= 10; i++) {            waving[i-1] =                 Toolkit.getDefaultToolkit().getImage(                    "images/T"+i+".gif");         }        JFrame f = new JFrame("ImageSequenceTimer");        f.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });        ImageSequenceTimer controller = new ImageSequenceTimer();        controller.buildUI(f.getContentPane(), waving);        controller.startAnimation();        f.setSize(new Dimension(75, 100));        f.setVisible(true);    }}

⌨️ 快捷键说明

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