gpt4 book ai didi

java - 停止 Swing 计时器

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

我正在创建一个小“游戏”,您必须单击闪烁颜色的按钮,如果您在颜色仍在按钮上时按下它,则按钮将保持该颜色。到目前为止,我已经使用计时器设置了颜色的打开和关闭,但是如果按下按钮,我将无法停止计时器。这是我到目前为止的代码。

    //Changes To The Colors
ActionListener timerListener = new ActionListener() {

@Override
public void actionPerformed(ActionEvent evt) {

jButton1.setBackground(Color.blue);

}
};

int timerDelay = 1750;
Timer timer = new Timer(timerDelay, timerListener);

//Changes Colors Back To Default
ActionListener defaultTime = new ActionListener() {

@Override
public void actionPerformed(ActionEvent evt) {

jButton1.setBackground(null);

}
};

int waiter = 1000;
Timer defaultState = new Timer(waiter, defaultTime);

timer.start();
timer.setRepeats(true);
defaultState.start();
defaultState.setRepeats(true);

当我使用 Netbeans 时,我在 ActionPerformed 选项中添加了这就是我遇到问题的地方。它不允许我调用timer.stop();

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

if(jButton1.getBackground().equals(Color.blue)){
jButton1.setBackground(Color.blue);
timer.stop();
defaultState.stop();

}

}

现在我只使用一个按钮来掌握整个 Swing 计时器的窍门

最佳答案

当您运行此代码时,jButton1 的颜色会闪烁。一次是蓝色,一次是默认。 jButton1ActionPerformed() 在此方法中,如果按钮的背景颜色为蓝色,您将停止计时器 (if(jButton1.getBackground().equals(Color.blue)))。当按钮为默认值时,情况并非如此(它被设置为默认值,因为您正在设置颜色 null)。它闪烁是因为计时器正在重复。如果按钮是蓝色的,您可以毫无问题地停止计时器。

如果背景颜色为 null,则 if(jButton1.getBackground().equals(Color.blue)) 条件为 false。这就是为什么你的时代不会停止。

当按钮背景为蓝色时单击该按钮。您的计时器将停止。

如果您需要使用按钮颜色停止计时器,

ActionListener timerListener = new ActionListener() {

@Override
public void actionPerformed(ActionEvent evt) {

jButton1.setBackground(Color.blue);
timer.stop();
defaultState.stop();
}
};

希望这有帮助。

关于java - 停止 Swing 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043783/

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