【问题标题】:Stopping a Swing Timer停止摆动计时器
【发布时间】:2014-09-26 01:10:45
【问题描述】:

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

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

    }

} 

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

【问题讨论】:

标签: java swing timer


【解决方案1】:

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

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

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

如果你需要用按钮颜色来停止计时器,

ActionListener timerListener = new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent evt) {

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

希望这会有所帮助。

【讨论】:

  • 我会试一试,让你知道。 :)
  • 根据您的代码,这是正在发生的事情。按钮为蓝色,当您按下按钮时,计时器将停止
  • 当我按下按钮时,我的会抛出一个错误。它不允许我调用 timer.stop();
  • 哇。我解决了这个问题。对我来说真正的电枢错误。感谢您的宝贵时间,我们真诚地感谢您。 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多