在本网站的慷慨用户的大力帮助下,我设法让我的计时器在我设计的程序中正常运行。这是代码的一小部分:
//Class represents what do when a button is pressed
private static class ButtonHandler implements ActionListener {
public void actionPerformed (ActionEvent e) {
them.setText("");
final JButton button = (JButton)e.getSource();
Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
final String tc = random();
them.setText("They chose: " + tc + "!");
Timer timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (button == rock) {
whoWins("rock", tc);
} else if (button == paper) {
whoWins("paper", tc);
} else if (button == scissors) {
whoWins("scissors", tc);
}
yourWins.setText("Your wins: " + yw);
theirWins.setText("Their wins: " + tw);
}
});
timer.setRepeats(false);
timer.start();
}
});
timer.setRepeats(false);
timer.start();
}
}
我想要做的是避免必须定义多个计时器才能让它们连续发射。如果可以创建我需要延迟时调用的计时器类,那将是最好的。如果我需要替换" new ActionListener()"用"这个"什么的,请通知我。我是java的新手,我想知道这一点,所以我可以继续从事各种家庭项目。
答案 0 :(得分:2)
为您需要执行的每项操作创建一个类,实现ActionListener
。您需要提供适当的方法来设置在类之间需要携带的状态。
然后创建您需要的每个Timer
的实例,并为其分配相应的操作类(您之前创建的),并在需要时使用isRunning
和restart
,具体取决于根据您的需求
创建ActionListener
和Timer
的单个实例以及某种状态标记。
ActionListener
将检查标志的状态,并根据其值
如果需要,您可以设置标志状态并启动Timer
。
恕我直言,这使得代码相当不灵活,因为所有的状态都被组合在一起,而不是被单独的块隔离。
您也可以使用这个想法,但不是在外部设置标志,而是在启动Timer
时准备状态,并允许ActionListener
更改状态勾选Timer
。
这意味着您可以将Timer
设置为重复,每个勾号都会执行不同的操作,当您完成时停止Timer
内的ActionListener
...