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