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);
}
});