2015-12-11 3 views
0

я следующее действие, выполняемое методомКак остановить таймер

public void actionPerformed(ActionEvent e) { 

    Timer timer = new Timer(); 
    Object source = e.getSource(); 

    String stringfromDate = tffromDate.getText(); 
    String stringtoDate = tftoDate.getText(); 

    if (source == button) { 
     // auto refresh begins 
     int delay = 0; // 0 seconds startup delay 
     int period = 7000; // x seconds between refreshes 
     timer.scheduleAtFixedRate(new TimerTask() 
     { 
      @Override 
      // i still have to truly understand what overide does however 
      // netbeans prompted me to put this 
      public void run() { 

       try { 
        getdata(stringfromDate, stringtoDate);// run get data 
                  // method 
       } catch (IOException | BadLocationException ex) { 
        Logger.getLogger(JavaApplication63.class.getName()) 
          .log(Level.SEVERE, null, ex); 
       } 
      } 
     }, delay, period); 
    } 

    if (source == button1) { 
     timer.cancel(); 

     textarea.setText(""); 
    } 
} 

У меня есть 2 кнопки на моем GUI один называется получить информацию (кнопка) и другую называемую четкую информацию (button1). Я не могу получить свою ясную информацию (button1), чтобы остановить таймер и очистить текстовую область, чтобы можно было выполнить новый поиск. Я просто не могу заставить этого прекратить помощь.

+0

Вы можете форматировать Ваш код правильно, так что мы можем на самом деле читать? Отступ это и так? – Robert

+1

Похоже, вы создаете новый объект Timer при каждом вызове метода, поэтому, конечно, вы не можете получить доступ к предыдущему таймеру. Переместите это объявление таймера в класс, т. Е. Сделайте его членом вместо локальной переменной. – Robert

ответ

3

Рассмотрите эти изменения в своем коде. В основном код делает эти вещи по-другому:

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

  • только создать новый таймер, если была нажата кнопка запуска.

    //Pulled up for access to make canceable . 
    protected Timer timer; 
    
    public void actionPerformed(ActionEvent e) { 
    
        Object source = e.getSource(); 
    
        String stringfromDate = tffromDate.getText(); 
        String stringtoDate = tftoDate.getText(); 
    
        if (source == button) { 
        //Stop existing one before creating new. 
        if(timer != null) { 
         timer.cancel(); 
        } 
        //Now make new 
        timer = new Timer(); 
    
        // auto refresh begins 
        int delay = 0; // 0 seconds startup delay 
        int period = 7000; // x seconds between refreshes 
        timer.scheduleAtFixedRate(new TimerTask() { 
         @Override 
         public void run() { 
    
          try { 
           getdata(stringfromDate, stringtoDate);// run get data 
                     // method 
          } catch (IOException | BadLocationException ex) { 
           Logger.getLogger(JavaApplication63.class.getName()).log(Level.SEVERE, null, ex); 
    
          } 
    
         } 
        }, delay, period); 
        } 
        if (source == button1) {   
        //NULLCHECK 
        if(timer != null) { 
         timer.cancel(); 
        } 
        textarea.setText(""); 
        } 
    } 
    
+0

На самом деле, @LittleSanti, я понятия не имею, что такое 'button'. Я предполагаю, что это кнопка« start ». Но если я посчитал {правильно, это * происходит * в этом 'if' ?! – Jan

+0

@ Jan Я только что попробовал ваше предложение, оно не работает, кнопка - кнопка запуска, а затем кнопка1 является кнопкой остановки, чтобы очистить процесс таймера и очистить текст ... может быть, нажатие кнопки на кнопку очистки информация (button1) не зарегистрирована как клик, пока поток активен? – Ingram

+0

Мне нужно будет увидеть больше кода (например, как вы зарегистрируете actionListener и прочее), чтобы проверить это. Если вы не знаете, в какой ветви ваш код работает, щедро примените System.out («Теперь я в источнике == button1») и т. Д. К вашему коду или используйте отладчик. – Jan

Смежные вопросы