import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; import org.jdesktop.animation.timing.Animator; import org.jdesktop.animation.timing.TimingTarget; import org.jdesktop.animation.timing.TimingTargetAdapter; public class TimingSample4 extends BasicSample { private JLabel label; private Animator animator; public TimingSample4() { super(); JPanel panel = new JPanel(); panel.setLayout(null); label = new JLabel(""); label.setFont(new Font("San-Serif", Font.BOLD, 24)); label.setBounds(600, 100, 400, 50); panel.add(label); JButton loopButton = new JButton("LOOP"); loopButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { animator.cancel(); animator.setRepeatBehavior(Animator.RepeatBehavior.LOOP); animator.start(); } }); panel.add(loopButton); loopButton.setBounds(400, 200, 90, 20); JButton reverseButton = new JButton("REVERSE"); reverseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { animator.cancel(); animator.setRepeatBehavior(Animator.RepeatBehavior.REVERSE); animator.start(); } }); panel.add(reverseButton); reverseButton.setBounds(500, 200, 90, 20); frame.add(panel, BorderLayout.CENTER); frame.setSize(new Dimension(600, 300)); frame.setVisible(true); setAnimator(); } private void setAnimator() { TimingTarget target = new TimingTargetAdapter() { private void setText() { Date date = new Date(); label.setText(date.toString()); } public void begin() { setText(); } public void repeat() { setText(); } public void end() { clear(); } public void timingEvent(float fraction) { int x = 600 - (int)(1000 * fraction); label.setLocation(x, 100); setText(); } }; animator = new Animator(5000, Animator.INFINITE, Animator.RepeatBehavior.LOOP, target); } @Override protected void start() { animator.start(); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new TimingSample4(); } }); } }