设置与my GUI的自动交互之间的延迟(Java Swing)
我现在正在编写河内之塔的游戏。我想有一个自动版本,使用我的算法,每一步之间有一个延迟。我已经尝试过使用Java的定时器,但仍然不起作用
这是我代码的计时器
public void startDelay() {
ActionListener action = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
delayTimer.stop();
}
};
delayTimer = new Timer(delay, action);
delayTimer.setInitialDelay(500);
}
这是我想使用它的一个例子
public void algorithm() {
while(tower3.count() != 3) {
move1();
move2();
move3();
}
}
public void move1() {
getHeadLength();
if (tower3.count() == 3) {
return;
}
if (headT1 > headT3 && headT3 != 0) {
getBlock(tower3);
startDelay();
setBlock(tower1);
startDelay();
commitChange();
startDelay();
return;
}
}
有人知道我该如何实施吗
# 1 楼答案
计时器用于安排未来的活动。它不会停止当前的处理
例如,用于第一个`setDelay()代码的ActionListener可能会被更改为执行两件事:
第二个计时器将执行以下操作:
因此,代码的基本结构需要更改,以调用一系列计时器,每个计时器执行不同的功能
或者另一种方法是使用一个计时器来跟踪计时器的当前
state
。因此,每当计时器触发时,您都会检查状态,然后为当前state
执行适当的方法,然后更新state
# 2 楼答案
使用中编写文本:
Timer
执行所需的一个或多个操作,如下面的MRE所示以下演示中的操作只是在^{