gpt4 book ai didi

Java Swing 定时器避免重复

转载 作者:行者123 更新时间:2023-12-02 05:55:51 25 4
gpt4 key购买 nike

经过本网站慷慨用户的大力帮助,我成功地使我的计时器在我正在设计的程序中正常运行。这是一小段代码:

//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()”替换为“this”或其他内容,请通知我。我是 java 新手,我想解决这个问题,这样我就可以继续从事各种家庭项目。

最佳答案

你可以...

为您需要执行的每个操作创建一个类,实现 ActionListener。您将需要提供适当的方法来设置您需要在类之间携带的状态。

然后为您需要的每个 Timer 创建一个实例,并为其分配适当的操作类(您之前创建的),并使用 isRunningrestart 当你想使用它们时,取决于你的需要

你可以...

创建 ActionListenerTimer 的单个实例以及某种状态标志。

ActionListener 将检查标志的状态并根据其值采取适当的操作

当您需要时,您可以设置标志状态并启动计时器

恕我直言,这使得代码相当不灵活,因为所有状态都组合在一起,而不是被隔离在自己单独的 block 中。

您也可以使用这个想法,但不需要在外部设置标志,您只需在启动 Timer 时准备状态并允许 ActionListener 更改定时器每次滴答时状态标志。

这意味着您可以将Timer设置为重复,并且每个滴答都会执行不同的操作,当您完成...

关于Java Swing 定时器避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23094625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com