FileDocCategorySizeDatePackage
SliderDemo.javaAPI DocExample4494Tue Dec 12 18:59:18 GMT 2000None

SliderDemo

public class SliderDemo extends JFrame implements ActionListener

Fields Summary
static final int
FPS_INIT
int
frameNumber
int
delay
Timer
timer
boolean
frozen
JLabel
picture
Constructors Summary
public SliderDemo(String windowTitle)


       
        super(windowTitle);
        delay = 1000 / FPS_INIT;

        //Create the slider and its label
        JLabel sliderLabel = new JLabel("Frames Per Second", JLabel.CENTER);
        sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT);

        JSlider framesPerSecond = new JSlider(JSlider.HORIZONTAL,
                                              0, 30, FPS_INIT);
        framesPerSecond.addChangeListener(new SliderListener());

        //Turn on labels at major tick marks.
        framesPerSecond.setMajorTickSpacing(10);
        framesPerSecond.setMinorTickSpacing(1);
        framesPerSecond.setPaintTicks(true);
        framesPerSecond.setPaintLabels(true);
        framesPerSecond.setBorder(
                BorderFactory.createEmptyBorder(0,0,10,0));

        //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 BoxLayout(contentPane, BoxLayout.Y_AXIS));
        contentPane.add(sliderLabel);
        contentPane.add(framesPerSecond);
        contentPane.add(picture);
        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);
            }  
        });

    
Methods Summary
public voidactionPerformed(java.awt.event.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 voidmain(java.lang.String[] args)

        SliderDemo animator = new SliderDemo("SliderDemo");
        animator.pack();
        animator.setVisible(true);
        animator.startAnimation();
    
public voidstartAnimation()

        //Start (or restart) animating!
        timer.start();
        frozen = false;
    
public voidstopAnimation()

        //Stop the animating thread.
        timer.stop();
        frozen = true;