我正在尝试向程序添加计时器。我尝试调用java.util.Timer,但由于我不完全了解其背后的概念,这使我感到沮丧。我刚刚完成了一个学期的python编码课程,但这对我来说是一个完全不同的水平。
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class main extends Application implements EventHandler<ActionEvent>{
Button button;
Button button2;
Counter counter = new Counter(0);
Counter timecounter = new Counter(0);
Text text_counter = new Text(counter.S_count.get());
Text text_timecounter = new Text(timecounter.S_count.get());
Date currdate = new Date();
int currsec = currdate.getSeconds();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Counter Window");
button = new Button();
button2 = new Button();
button.setText("Reset");
button.setOnAction(this);
button2.setText("Tick");
button2.setOnAction(this);
button.setTranslateY(-120);
button2.setTranslateY(-80);
text_counter.textProperty().bind(counter.S_count);
text_timecounter.textProperty().bind(timecounter.S_count);
text_timecounter.setTranslateX(-100);
StackPane layout = new StackPane();
layout.getChildren().add(button);
layout.getChildren().add(button2);
layout.getChildren().add(text_counter);
layout.getChildren().add(text_timecounter);
Scene scene = new Scene(layout, 360,280);
primaryStage.setScene(scene);
primaryStage.show();
}
@Override
public void handle(ActionEvent event) {
if(event.getSource()==button){
counter.Reset();
}
if(event.getSource()==button2){
counter.Tick();
}
}
}
我用主循环在python中构建了一个程序。我在想一种“肮脏”的方式,方法是在循环中添加一个检查,以检查当前日期的秒数是否已更改,如果已更改,则将值增加一。
class timerclass {
Timer timer1;
private int timecounter = 0;
TimerTask Task1 = new TimerTask() {
@Override
public void run() {
setTimecounter(getTimecounter()+1);
}
};
public timerclass(){
timer1 = new Timer();
}
public int getTimecounter() {
return timecounter;
}
public void setTimecounter(int timecounter) {
this.timecounter = timecounter;
}
}
这就是我创建新计时器的距离。我知道我必须创建一个任务并将其安排到计时器,但是我丝毫不知道如何...
我将如何处理?很抱歉给您带来不便。
Timer
用于计划任务..那么,您在哪里编写这些任务呢?好吧,你必须在TimerTask
课堂上写这些任务。
使困惑 ?让我分解一下
Timer timer = new Timer();
现在您已经创建了一个Timer类的对象。现在您必须执行一些任务吧?为此,创建一个对象TimerTask
。
TimerTask task = new TimerTask()
{
public void run()
{
//The task you want to do
}
};
现在,您已经创建了一个任务,应该在run方法中定义要执行的任务。
为什么要自己编写TimerTask类?那就是因为TimerTask是具有三个方法的抽象类。所以您需要定义要使用的任何方法。
现在安排任务
timer.schedule(task,5000l);
注意5000之后的'l'。它表示长数据类型,因为该schedule
方法定义为
void schedule(TimerTask task,long milliseconds)
供进一步参考
https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html
https://docs.oracle.com/javase/7/docs/api/java/util/TimerTask.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句