【发布时间】:2016-04-09 23:52:06
【问题描述】:
我的问题:程序在我的场景中延迟的有效方法。
我的场景: 我正在为一个简短的项目制作一个问答游戏,长话短说。当用户按下四个有答案的 J 按钮之一时,就会回答一个问题。然后我的quizengine 类调用此处显示的paintbutton 方法。之后,它继续调用一些其他方法来负责使下一个问题出现。现在我想要的是使按钮在两种颜色之间随着时间间隔的减少而变化。
到目前为止我做了什么: 首先,我在paintbutton 方法和将界面更改为下一个问题的方法之间放置了一个JoptionPane,只是为了查看按钮是否会改变颜色。它成功了。当然这不是我的本意,我只是想要一个时间间隔。 然后我尝试使用 Thread.Sleep。虽然程序会在切换到下一个问题之前等待,但颜色变化是不可见的。 最后,我尝试了 Timer thingy 的实现(可能不正确),尽管它改变了颜色,但程序继续执行下一个问题。
我想成为代码
/* Paints the button pressed red or green
* Green if the anwser is correct red if
* its false
*
* @param int bnr the number of the button
* @param boolean corr true if correct false if false :D
*/
public static void paintbutton(int bnr,boolean corr) {
for (int i=10;i>1;i--){
b[bnr-1].setBackground(null);
//wait for i*100 milliseconds
b[bnr-1].setBackground(corr?Color.green:Color.red);
}
}
【问题讨论】:
-
使用 Swing
Timer,有关详细信息,请参阅 How to use Swing Timers -
我的赌注也在那里。正如我所说,它对我来说失败了,可能是因为我没有正确使用它。我现在正试图弄清楚。关于如何使用它的示例我的场景将帮助我理解。
-
啊实际上它可能会给我带来问题,因为其余代码将继续,这将导致更改问题文本。至少这似乎是问题=/
-
好吧,你要么使用 Swing
Timer或SwingWorker来完成它,要么什么都不会重绘,你不能阻止 EDT -
请保持家庭友好。无需在这里发誓就可以表达您的观点。此外,您应该将您的解决方案添加为答案,而不是将其添加到您的问题中。如果你把它留在里面,它很可能会被编辑为噪音。
标签: java swing animation time intervals