Search code examples
javaswingtimertaskswingx

can I stop timer When I am in Timer on JAVA


I have a game method that has Timer inside this method, only for some specific case(if condition below) i wanna stop timer...But for some reason it is causing me a crash.

public model() {
public game() {                    
            Timer timer = new Timer(50, new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    ....
                   //draw shapes on JFrame

                if (model.Life == 0) { //specific condition
                    model.timer.stop(); //timer is making a crash here
                }
                repaint();
                }
               });
            timer.start();
        }

Solution

  • The Timer is the source of the ActionEvent so you can just do:

    if (your condition)
    {
        Timer timer = (Timer)e.getSource();
        timer.stop();
    }
    

    This way you don't have to worry about keeping an instance variable for the Timer.