title: How to implement actionlistener inside a Timer program?
body: <p>I need this timer program to run indefinately, until someone presses the reset button. This timer program would increment or decrement with a single click of a button. For example, click once, and it will increment UNTIL someone says it to stop, or to decrement. Problem is, I think i've made the correct codes for this, but it simply wont run. There must be a logical error in it, can't seem to pinpoint where exactly, though. Can you tell whats wrong with my code? </p>
  
  <pre><code>import java.awt.event.*;
  import java.awt.*;
  import javax.swing.*;
  
  public class TimerTutorial extends JFrame {
     JLabel timerLabel;
     JButton buttonAdd, buttonMin, buttonReset;
     Timer timer;
     Timer timer2;
  
     public TimerTutorial() {
        setLayout(new GridLayout(2, 2, 5, 5));
        buttonReset = new JButton("Press to reset");
        add(buttonReset);
  
        buttonAdd = new JButton("Press to Add");
        add(buttonAdd);
  
        buttonMin = new JButton("Press to Minus");
        add(buttonMin);
  
        timerLabel = new JLabel("Waiting...");
        add(timerLabel);
  
        event e = new event();
        buttonAdd.addActionListener(e);
        buttonMin.addActionListener(e);
        buttonReset.addActionListener(e);
     }
  
     public class event implements ActionListener {
        public void actionPerformed(ActionEvent e) {
           while (true) {
              TimeClassAdd tcAdd = new TimeClassAdd();
              timer = new Timer(1000, tcAdd);
              timer.start();
              timerLabel.setText("IT HAS BEGUN");
           }
        }
  
        public class TimeClassAdd implements ActionListener {
           int counter = 0;
  
           public void actionPerformed(ActionEvent e) {
              String status_symbol[] = new String[4];
              status_symbol[0] = "Unused";
              status_symbol[1] = "Green";
              status_symbol[2] = "Yellow";
              status_symbol[3] = "Red";
              if (e.getSource() == buttonAdd) {
                 if (counter &lt; 3) {
                    counter++;
                    timerLabel.setText("Time left: " + status_symbol[counter]);
                 } else {
                    timerLabel.setText("Time left: " + status_symbol[counter]);
                 }
              } else if (e.getSource() == buttonMin) {
                 if (counter &gt;= 3) {
                    counter = 3;
                    timerLabel.setText("Time left: " + status_symbol[counter]);
                    counter--;
                 } else if (counter == 2) {
                    timerLabel.setText("Time left: " + status_symbol[counter]);
                    counter--;
                 } else if (counter == 1) {
                    timerLabel.setText("Time left: " + status_symbol[counter]);
                 }
              }
           }
        }
     }
  
     public static void main(String args[]) {
        TimerTutorial gui = new TimerTutorial();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setSize(500, 250);
        gui.setTitle("Timer Tutorial");
        gui.setVisible(true);
     }
  }
  </code></pre>