2014-11-09 7 views
-1

Привет, ребята, я новичок в java ... :( Я просто хочу, чтобы моя кнопка (начало) начала таймер, но я хочу автоматически остановить таймер с помощью «if» например ... когда пользователь вводит время и таймер, чтобы получить таймер он останавливается ... до сих пор мое кодирование, как это ...Как остановить таймер с помощью «if»

private void startTimerActionPerformed(java.awt.event.ActionEvent evt) {            

     javax.swing.Timer tm = new javax.swing.Timer(100, new ActionListener() 
     { 
      public void actionPerformed (ActionEvent evt) { 
       AddOneActionPerformed(evt); 
      } 
     }); 

     tm.start(); 

     int getTM,getM,getTS,getS,Secs,tenSec,Mins,tenMin; 

     getTM = Integer.parseInt(enterTenMins.getText()); 
     getM = Integer.parseInt(enterOneMins.getText()); 
     getTS = Integer.parseInt(enterTenSecs.getText()); 
     getS = Integer.parseInt(enterOneSecs.getText()); 

     tenMin = Integer.parseInt(tenMins.getText()); 
     Mins = Integer.parseInt(oneMins.getText()); 
     tenSec = Integer.parseInt(tenSecs.getText()); 
     Secs = Integer.parseInt(oneSecs.getText()); 
    }          

и AddOneActionPerformed(evt) является

private void AddOneActionPerformed(java.awt.event.ActionEvent evt) {          
     int dd,Secs,tenSec,Mins,tenMin; 

     tenMin = Integer.parseInt(tenMins.getText()); 
     Mins = Integer.parseInt(oneMins.getText()); 
     tenSec = Integer.parseInt(tenSecs.getText()); 
     Secs = Integer.parseInt(oneSecs.getText()); 
     dd= Integer.parseInt(digitValue.getText()); 
     dd= dd+1; 


     if (dd==10) 
      dd = 0; 

     if (Secs == 10) 
      Secs = 0; 

     if (dd==0) 
      Secs=Secs +1; 

     if (tenSec>=6) 
      tenSec = 0; 

     if (Secs==10) 
      tenSec=tenSec +1; 

     if (Mins==10) 
      Mins = 0; 

     if (tenSec==6) 
      Mins=Mins+1; 

     if (tenMin>=6) 
      tenMin=0; 

     if (Mins==10) 
      tenMin=tenMin+1; 

     String ss = Integer.toString(dd); 
     digitValue.setText(ss); 

     String ff = Integer.toString(Secs); 
     oneSecs.setText(ff); 

     String gg = Integer.toString(tenSec); 
     tenSecs.setText(gg); 

     String hh = Integer.toString(Mins); 
     oneMins.setText(hh); 

     String jj = Integer.toString(tenMin); 
     tenMins.setText(jj); 

     showDigitActionPerformed(evt); 
     showOneSecsActionPerformed(evt); 
     showTenSecsActionPerformed(evt); 
     showOneMinsActionPerformed(evt); 
     showTenMinsActionPerformed(evt); 

    } 
+1

Возможно, вам захочется прочитать [Кодовые обозначения для языка программирования Java TM] (http://www.oracle.com/technetwork/java/codeconvtoc-136057.html), это упростит чтобы люди читали ваш код и читали другие. – MadProgrammer

ответ

2

Вы можете получить экземпляр Timer из метода ActionEvent getSource(), а затем вызвать stop на нем. Итак, ...

// for your Timer's ActionListener 
@Override 
public void actionPerformed(ActionEvent evt) { 
    if (someStoppingConditionIsTrue) { 
     Timer timer = (Timer) evt.getSource(); 
     timer.stop(); 
    } else { 
     // code to call repeatedly 
    } 
} 

Обратите внимание, что у вас есть два отдельных вопроса, и они должны решать их отдельно. Вышеупомянутый код - это способ остановить таймер из своего собственного ActionListener с использованием некоторого условия. Ваш другой вопрос - как получить пользовательский ввод, чтобы вы могли изменить это условие, и это будет включать отдельный код, который не зависит от вышеуказанного кода таймера.

Рассмотрим в addtion:

  • Используйте два JSpinners к для пользователя для ввода минут и секунд.
  • Дайте вашему классу int totalTime поле.
  • Установите это значение в методе startTimerActionPerformed.
  • Условное обозначение действия таймера уменьшает это значение на основе измеренного прошедшего времени с использованием различий в вызовах System.getSystemTime().
  • Рассчитайте разницу между totalTime и elapsedTime (оно будет в миллисекундах), например, timeLeft
  • Рассчитайте свои минуты и секунды с момента времени.
  • Затем отобразите эти значения в JLabel с использованием форматированной строки, скажем что-то вроде String.format("%02d:%02d", minutes, seconds).
  • Когда timeLeft == 0, вы останавливаете свой таймер.
+0

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

+0

@javanewbie: У вас есть два отдельных вопроса, и они должны решать их отдельно. Вышеупомянутый код - это способ остановить таймер из своего собственного ActionListener с использованием некоторого условия. Ваш другой вопрос - как получить пользовательский ввод, чтобы вы могли изменить это условие, и это будет включать в себя отдельный код, который * независимо * приведенного выше кода таймера. –

+0

, так что мне нужен независимый код, чтобы остановиться с пользовательским вводом? –

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

  • Нет связанных вопросов^_^