我在类GUI中有6个对象正在移动代码:
Anim anim = new Anim();
Timer timer = new Timer();
timer.scheduleAtFixedRate(anim, 30, 30);
当一个物体到达某一点时,我想要阻止它。在Anim课堂上,我正在做:
public class Anim extends TimerTask {
@Override
public void run() {
if (t1.x == 300 && t1.y == 300) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
停止申请,我想留在具体的对象。怎么做?
修改
好的,现在效果很好,不会干扰其他物体。但是对象正在继续前进,并在1秒后回到起始位置。我希望他在睡觉时一直处于相同的位置。
if (Main.auto1.x == 700 && Main.auto1.y == 350) {
timer = new javax.swing.Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Main.auto1.x = 700;
Main.auto1.y = 350;
}
});
timer.setRepeats(false);
timer.start();
答案 0 :(得分:3)
在有时挂起Swing应用程序的Swing应用程序中使用Swing Timer而不是Thread.sleep()
和Java Timer。
示例代码:
private Timer timer;
...
timer = new javax.swing.Timer(3000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
//do what ever you want to do
// call timer.stop() when the condition is matched
}
});
timer.setRepeats(true);
timer.start();
请查看我的另一篇文章How to fix animation lags in Java?