import java.awt.Dimension; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; 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; import org.jdesktop.animation.timing.interpolation.SplineInterpolator; import org.jdesktop.animation.timing.triggers.ActionTrigger; public class TimingSample8 extends JPanel { private JLabel car1; private JLabel car2; private JLabel car3; private JButton button; private Animator animator1; private Animator animator2; private Animator animator3; private int IMAGE_W = 60; private int IMAGE_H = 40; public TimingSample8() { setLayout(null); JLabel desc1 = new JLabel("

等速

"); desc1.setSize(desc1.getPreferredSize()); desc1.setLocation(20, 50); add(desc1); JLabel desc2 = new JLabel("

ゆっくり発進、ゆっくり停車

"); desc2.setSize(desc2.getPreferredSize()); desc2.setLocation(20, 250); add(desc2); JLabel desc3 = new JLabel("

ロケッスタート、急ブレーキ

"); desc3.setSize(desc3.getPreferredSize()); desc3.setLocation(20, 450); add(desc3); car1 = new JLabel(new ImageIcon("car.gif")); car2 = new JLabel(new ImageIcon("car.gif")); car3 = new JLabel(new ImageIcon("car.gif")); button = new JButton("Start"); car1.setBounds(20, 110, IMAGE_W, IMAGE_H); car2.setBounds(20, 310, IMAGE_W, IMAGE_H); car3.setBounds(20, 510, IMAGE_W, IMAGE_H); button.setBounds(700, 80, 80, 40); add(car1); add(car2); add(car3); add(button); setPreferredSize(new Dimension(800, 600)); setAnimator(); } private void setAnimator() { TimingTarget target1 = new TimingTargetAdapter() { public void timingEvent(float fraction) { int x = (int)(600.0f * fraction) + 20; car1.setLocation(x, 110); } }; animator1 = new Animator(2000, target1); ActionTrigger trigger1 = ActionTrigger.addTrigger(button, animator1); TimingTarget target2 = new TimingTargetAdapter() { public void timingEvent(float fraction) { int x = (int)(600.0f * fraction) + 20; car2.setLocation(x, 310); } }; animator2 = new Animator(2000, target2); animator2.setAcceleration(0.4f); animator2.setDeceleration(0.4f); ActionTrigger trigger2 = ActionTrigger.addTrigger(button, animator2); TimingTarget target3 = new TimingTargetAdapter() { public void timingEvent(float fraction) { int x = (int)(600.0f * fraction) + 20; car3.setLocation(x, 510); } }; animator3 = new Animator(2000, target3); SplineInterpolator interpolator = new SplineInterpolator(0.0f, 0.2f, 1.0f, 0.8f); animator3.setInterpolator(interpolator); ActionTrigger trigger3 = ActionTrigger.addTrigger(button, animator3); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame("Timing Sample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new TimingSample8()); frame.pack(); frame.setVisible(true); } }); } }