添加计时器到我的程序(javafx)[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加计时器到我的程序(javafx)[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在尝试为我的程序添加一个计时器。我试过调用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在python中构建了一个程序。我想通过在循环中添加一个检查“脏”方法来检查当前日期的秒数是否已经改变,如果有,则将值增加1。
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
以上是关于添加计时器到我的程序(javafx)[重复]的主要内容,如果未能解决你的问题,请参考以下文章