Java Firing ActionEvent

Я видел подобные посты раньше, но вопросы или ответы неясны, так что терпите меня, если вы слышали это раньше. У меня есть таймер, и я хочу, чтобы событие ActionEvent происходило при выключенном таймере. Я не хочу использовать метод javax.swing.Timer. Как это может быть сделано? Не нужно объяснять, но это было бы полезно. Я ищу что-то вроде метода ActionEvent.do()

Мой код:

/**
 * 
 * @param millisec time in milliseconds
 * @param ae action to occur when time is complete
 */
public BasicTimer(int millisec, ActionEvent ae){
    this.millisec = millisec;
    this.ae = ae;
}

public void start(){
    millisec += System.currentTimeMillis();
    do{
        current = System.currentTimeMillis();
    }while(current < millisec);

}

Спасибо! Dando18

1 ответ

Здесь у вас есть простая реализация таймера. Почему вы просто не проверили, как работают другие таймеры?

 public class AnotherTimerImpl {

        long milisecondsInterval;
        private ActionListener listener;
        private boolean shouldRun = true;

        private final Object sync = new Object();

        public AnotherTimerImpl(long interval, ActionListener listener) {
            milisecondsInterval = interval;
            this.listener = listener;
        }

        public void start() {
            setShouldRun(true);
            ExecutorService executor = Executors.newSingleThreadExecutor();
            executor.execute(new Runnable() {

                @Override
                public void run() {
                    while (isShouldRun()) {
                        listener.actionPerformed(null);
                        try {
                            Thread.sleep(milisecondsInterval);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                            break;
                        }
                    }

                }
            });
        }

        public void stop() {
            setShouldRun(false);
        }

        public boolean isShouldRun() {
            synchronized (sync) {
                return shouldRun;
            }
        }

        public void setShouldRun(boolean shouldRun) {
            synchronized (sync) {
                this.shouldRun = shouldRun;
            }
        }

    }
Другие вопросы по тегам