问题描述
private class MultipleGensListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
for(int i = 0; i < 25; i++)
{
game.runSimulationOneGen();
changeGrid();
}
}
}
//这是循环.changeGrid 方法在 GUI 上显示游戏网格,但//只有第 25 次迭代在屏幕上可见.我希望每一个都是//在循环继续之前大约半秒可见.//我在这里看到了一些与我要问的非常接近的问题的回答,//但我真的不明白如何将它应用到我的程序中..//感谢您的帮助.
//this is the loop. The changeGrid method displays a game grid on a GUI but // only the 25th iteration is visible on screen. I would like each one to be // visible for about a half a second before the loop continues. // I have seen some questions answered on here that are very close to what I'm asking, // but I just don't really understand how to apply it to my program.. // thanks for any help.
推荐答案
如果模拟执行的代码速度很快,并且不会消耗太多 CPU 和时间,那么可以考虑使用 Swing Timer 来进行循环和延迟.否则,您将需要使用后台线程,例如可以使用 SwingWorker 对象来完成.
If the code performed by the simulation is quick and does not consume too much CPU and time, then consider using a Swing Timer to do your looping and delay. Otherwise, you'll need to use a background thread such as can be done with a SwingWorker object.
例如如果同时使用 Swing Timer 和 SwingWorker:
For e.g. if using both Swing Timer and SwingWorker:
private class MultipleGensListener implements ActionListener {
protected static final int MAX_INDEX = 25;
public void actionPerformed(ActionEvent e) {
int timerDelay = 500; // ms delay
new Timer(timerDelay, new ActionListener() {
int index = 0;
public void actionPerformed(ActionEvent e) {
if (index < MAX_INDEX) { // loop only MAX_INDEX times
index++;
// create the SwingWorker and execute it
new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
game.runSimulationOneGen(); // this is done in background thread.
return null;
}
@Override
protected void done() {
changeGrid(); // this is called on EDT after background thread done.
}
}.execute(); // execute the SwingWorker
} else {
((Timer) e.getSource()).stop(); // stop the timer
}
}
}).start(); // start the Swing timer
}
}
这篇关于我如何让这个 java for 循环在每次迭代之间暂停 1/2 秒?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论