停止Swing Timer

时间:2014-09-25 16:39:00

标签: java swing timer

我正在制作一个小游戏"您必须单击闪烁颜色的按钮,如果在颜色仍然在按钮上时按下它,按钮将保持该颜色。到目前为止,我有定时器设置颜色打开和关闭,但如果按下按钮,我将无法停止计时器。到目前为止,这是我的代码。

    //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();

    }

} 

现在我只使用一个按钮来获得整个挥杆计时器的东西

1 个答案:

答案 0 :(得分:1)

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

如果背景颜色为空,则null条件为false。这就是为什么你的时代不会停止。

如果背景为蓝色,请点击该按钮。你的计时器将被停止。

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

if(jButton1.getBackground().equals(Color.blue))

希望这有帮助。