Java 如何用“如果”停止计时器

Java 如何用“如果”停止计时器,java,swing,javax.swing.timer,Java,Swing,Javax.swing.timer,嗨,伙计们,我是java新手…: 我只想让我的按钮启动计时器,但我想用“如果”自动停止计时器,例如。。。当用户输入一个时间,计时器到达计时器时,它停止。。。到目前为止,我的编码是这样的 private void startTimerActionPerformed(java.awt.event.ActionEvent evt) { javax.swing.Timer tm = new j

嗨,伙计们,我是java新手…: 我只想让我的按钮启动计时器,但我想用“如果”自动停止计时器,例如。。。当用户输入一个时间,计时器到达计时器时,它停止。。。到目前为止,我的编码是这样的

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());
    }                                    
AddOneActionPerformedevt是


您可以从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中停止计时器的方法。您的另一个问题是如何获得用户输入以允许您更改该条件,这将涉及独立于上述计时器代码的单独代码

另外考虑:

使用两个JSpinner为用户输入分钟和秒。 给你的班级一个整型totalTime字段。 在StartTimeActionPerformed方法中设置此值。 让计时器的ActionListener使用对System.getSystemTime的调用差异,根据测量的已用时间减少此值。 计算得到totalTime和elapsedTime之间的差值,以毫秒为单位,称为timeLeft 从timeLeft计算您的分钟和秒数。 然后使用格式化字符串(比如字符串)在JLabel中显示这些值。格式%02d:%02d,分,秒。 当timeLeft==0时,即停止计时器。
感谢您的快速回复,但我希望用户键入时间,然后它停止。。。。有没有办法把它放在同一个按钮上,还是我必须用另一个按钮button@javanewbie当前位置您有两个独立的问题,应该分别解决。上面的代码是一种使用某些条件从自己的ActionListener中停止计时器的方法。你的另一个问题是如何获得用户输入以允许你更改该条件,这将涉及独立于上述计时器代码的单独代码。因此,我需要一个独立的代码来停止用户输入?@javanewbie:不,你只需要找出停止条件。请参阅上面我的答案的补充。好的,我应该把它放在按钮或“AddOneActionPerformedevt”中吗?您可能希望有一个通读,它将使人们更容易阅读您的代码,您也更容易阅读其他代码
// 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
   }
}