Java 如何用“如果”停止计时器
嗨,伙计们,我是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
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
}
}