Это приложение имеет 2 потока, показанный здесь, метод, который автоматически останавливает метод автоматического кликера каждые 4 секунды (просто для облегчения), чтобы сделать движение мыши. Я хочу, чтобы он остановил таймер, когда вы нажимаете кнопку остановки gui. Прямо сейчас, когда вы нажимаете стоп и затем начинаете снова, у него есть два таймера, которые будут выполнять код; и так далее.Как остановить таймер качания java
Действия слушателя.
class MyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(view.getBtnStart()))
{
autoClick.unTerminate();
bool = true;
getInfo();
}
if (e.getSource().equals(view.getBtnExit()))
{
System.exit(0);
}
if (e.getSource().equals(view.getBtnStop()))
{
bool = false;
autoClick.terminate();
}
}//end of actionPerformed
}//end of inner class
Thread
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
Timer timer = new Timer(4000, new ActionListener() {//301000 5minutes and 1second
@Override
public void actionPerformed(ActionEvent evt) {
autoClick.timeOverload();
}
});
//if (!bool){timer.stop();}
timer.setRepeats(true); //false only repeates once
timer.start();
}
});//end of t2
вызывается метод timeOverload неоднократно.
Спасибо за ваше время и помогли новичкам :).
Если вы создаете свой таймер вне потока 'final', чтобы иметь возможность [' stop'] (https://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html #stop()), это сделает это. Или вы можете использовать 'boolean', чтобы проверять каждый тик, если он должен сам' stop' – AxelH
@AxelH Я пробовал то, что я думал, вы имели в виду, но я, похоже, не нашел правильного пути для этого. Если бы вы не возражали, пример был бы замечательным. – Hades
Я мог бы, но для этого мне нужен [mcve]. Не могли бы вы привести пример, используя только Thread и Timer, не GUI или экземпляр autoClick? – AxelH