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

📄 sliderdemo2.java

📁 这是一个英文版的《Java程序设计与问题解决》现在好多大学都当成教材
💻 JAVA
字号:
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.util.Hashtable;public class SliderDemo2 extends JFrame                          implements ActionListener {    //Set up animation parameters.    static final int FPS_INIT = 15;    //initial frames per second    int frameNumber = 0;    int delay;    Timer timer;    boolean frozen = false;    //This label uses ImageIcon to show the doggy pictures.    JLabel picture;    public SliderDemo2(String windowTitle) {        super(windowTitle);        delay = 1000 / FPS_INIT;        //Create the slider.        JSlider framesPerSecond = new JSlider(JSlider.VERTICAL,                                              0, 30, FPS_INIT);        framesPerSecond.addChangeListener(new SliderListener());        framesPerSecond.setMajorTickSpacing(10);        framesPerSecond.setPaintTicks(true);        //Create the label table.        Hashtable labelTable = new Hashtable();        //PENDING: could use images, but we don't have any good ones.        labelTable.put(new Integer( 0 ),                       new JLabel("Stop") );                     //new JLabel(new ImageIcon("images/stop.gif")) );        labelTable.put(new Integer( 3 ),                       new JLabel("Slow") );                     //new JLabel(new ImageIcon("images/slow.gif")) );        labelTable.put(new Integer( 30 ),                       new JLabel("Fast") );                     //new JLabel(new ImageIcon("images/fast.gif")) );        framesPerSecond.setLabelTable(labelTable);        framesPerSecond.setPaintLabels(true);        framesPerSecond.setBorder(                BorderFactory.createEmptyBorder(0,0,0,10));        //Create the label for the animation.        picture = new JLabel(new ImageIcon("images/doggy/T"                                         + frameNumber                                         + ".gif"),                             JLabel.CENTER);        picture.setAlignmentX(Component.CENTER_ALIGNMENT);        picture.setBorder(BorderFactory.createCompoundBorder(                BorderFactory.createLoweredBevelBorder(),                BorderFactory.createEmptyBorder(10,10,10,10)));        //Put everything in the content pane.        JPanel contentPane = new JPanel();        contentPane.setLayout(new BorderLayout());        contentPane.add(framesPerSecond, BorderLayout.WEST);        contentPane.add(picture, BorderLayout.CENTER);        contentPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));        setContentPane(contentPane);        //Set up a timer that calls this object's action handler.        timer = new Timer(delay, this);        timer.setInitialDelay(delay * 10); //pauses animation after frames                                          //0 and 6 by restarting the timer        timer.setCoalesce(true);        //Add a listener for window events        addWindowListener(new WindowAdapter() {            public void windowIconified(WindowEvent e) {                stopAnimation();            }            public void windowDeiconified(WindowEvent e) {                startAnimation();            }            public void windowClosing(WindowEvent e) {                System.exit(0);            }          });    }    /** Listens to the slider. */    class SliderListener implements ChangeListener {        public void stateChanged(ChangeEvent e) {            JSlider source = (JSlider)e.getSource();            if (!source.getValueIsAdjusting()) {                int fps = (int)source.getValue();                if (fps == 0) {                    if (!frozen) stopAnimation();                } else {                    delay = 1000 / fps;                    timer.setDelay(delay);                    timer.setInitialDelay(delay * 10);                    if (frozen) startAnimation();                }            }        }    }        public void startAnimation() {        //Start (or restart) animating!        timer.start();        frozen = false;    }    public void stopAnimation() {        //Stop the animating thread.        timer.stop();        frozen = true;    }    //Called when the Timer fires    public void actionPerformed(ActionEvent e) {        //Advance the animation frame.        if (frameNumber==13) {            frameNumber = 0;        } else {            frameNumber++;        }        //XXX no caching?        picture.setIcon(new ImageIcon("images/doggy/T"                                      + frameNumber                                      + ".gif"));        if (frameNumber==0 || frameNumber==6) {            timer.restart();        }    }    public static void main(String[] args) {        SliderDemo2 animator = new SliderDemo2("SliderDemo2");        animator.pack();        animator.setVisible(true);        animator.startAnimation();    }}

⌨️ 快捷键说明

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