我正在尝试编写一个基本的 Java 程序,它允许用户移动一个简单的复合形状,在其中,我有一个链接到私有 QuitHandler 类的按钮 (QuitButton)。单击退出按钮时,我希望在退出程序之前在程序窗口中播放动画。我知道我必须实现一个延迟,以便用户能够在程序退出之前看到动画,所以我在动画之后但在 System.exit(0) 之前使用 Thread.sleep(1000) 添加了一个延迟叫。所以我的代码看起来像这样:
//in private QuitHandler class (class linked to button)
//An ActionEvent is handed to handle(ActionEvent event) as a parameter
//when the quit button is clicked
public void handle(ActionEvent event) {
animation.animate();
this.delay();
System.exit(0);
}
private void delay() {
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
}
}
每当我注释掉 this.delay() 和 System.exit(0) 时,我想显示的动画就可以正常播放。每当我注释掉 animation.animate() 并留下 this.delay() 和 System.exit(0) 时,每当我按下退出按钮时,都会有 1 秒的延迟,然后程序退出。但是,当我对所有三个(动画、延迟和 System.exit)进行注释时,动画不会播放,我只会得到延迟并且程序退出。
我对控制流的理解会让我相信动画应该在延迟被触发之前播放,所以我不明白为什么动画自己工作,而不是当 this.delay() 和 System.exit(0 ) 在它之后被调用。我在 JavaDocs 上查找了 Thread.sleep() 方法,但没有看到任何解释为什么我的方法实现会导致以前的方法无法执行的内容。我最好的猜测是 Thread.sleep() 方法有一些问题导致了这个问题,但我不确定它可能是什么。
慕沐林林
MM们
相关分类