gpt4 book ai didi

java - 如何在计时器倒计时到 0 后禁用 JButton

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:28 26 4
gpt4 key购买 nike

我正在做一个点击游戏程序。用户必须输入时间限制(以秒为单位)。如果该值为正,则将启用单击按钮。当时间耗尽时,点击按钮将被禁用。这是我当前代码的一部分:我似乎无法使用从 setInterval() 返回的值并在计时器达到 0 后禁用我的 Click 按钮。

public void actionPerformed(ActionEvent a) {
if (a.getSource()==startButton){
try{
String sec = timeField.getText();
int delay = 1000;
int period = 1000;
timer = new Timer();
interval = Integer.parseInt(sec);

if(interval > 0){
timeLeft.setText("Time left: " + sec);
timeLeft.setText("Start!");
clickButton.setEnabled(false);



if(setInterval() > 0){
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
timeLeft.setText("Time left: " + String.valueOf(setInterval()));
}
}, delay, period);

clickButton.setEnabled(true);
}else{
System.out.print(String.valueOf(setInterval()));
clickButton.setEnabled(false);
}

} else {
JOptionPane.showMessageDialog(null, "Error! Please enter postivie Interger! ", "Error", JOptionPane.ERROR_MESSAGE);
}
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, "Error! Please enter Integer! ", "Error", JOptionPane.ERROR_MESSAGE);
}
}
else if(a.getSource()==clickButton)
{
clickCOunter++;
clickLabel.setText("Clicks: " + clickCOunter);
}
}

private static final int setInterval() {
if (interval == 1)
timer.cancel();
return --interval;
}

最佳答案

就你现在的情况而言,我会放置一个 System.out.println(setInterval());就在 if(setInterval() > 0) { 检查上方。这样您就可以更好地观察值如何变化。

作为一般提示,您不必使用 String.valueOf(...) 来打印数字。删除它也将使您的代码更易于阅读。另外,请确保对齐花括号 ( { } )。这也将使您的代码更易于阅读和调试。

最后,如果我可以提出建议,我会采取稍微简单的方法来解决您的问题。如果您使用 Swing 计时器,则可以在 actionPerformed() 方法之外创建它,并将其设置为定期调用 actionPerformed()。这样,actionPerformed() 内部的逻辑就可以大大简化。请查看 Swing 计时器的文档。 Swing Timer docs

关于java - 如何在计时器倒计时到 0 后禁用 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405045/

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