java - 从其他类中的 start() 方法更改文本

标签 java javafx timer

我想在游戏中使用计时器,但我不知道应该在哪里放置(或如何开发)代码,该代码每秒都会更新文本。

此时我正在使用 onMouseMoved 事件处理程序来更新文本,但我希望它在不依赖于鼠标的情况下运行

主类:

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        Text textTimer = new Text(x,y,"string");
        numberHandler.timer.scheduleAtFixedRate(numberHandler.startCounting, 0, 1000);
        ...
    }
}

带有定时器的类:

public class numberHandler {
    int timePassed = 0;
    Timer timer = new Timer();
    TimerTask startCounting = new TimerTask() {
        @Override
        public void run() {
            timePassed++;
        }
    };
}

最佳答案

您可以使用 JFX 的动画计时器


public class NumberHandler{
   private StringProperty text = new SimpleStringProperty();
   private LongProperty elapsedTime = new SimpleLongProperty(0);
   private IntegerProperty seconds = new SimpleIntegerProperty(0);
   private AnimationTimer timer = new AnimationTimer() {

            @Override
            public void handle(long now) {
                //now is time in Nano seconds
                // to get one second devide by 10^9 
                if((now-elapsedTime.get())/1_000_000_000L > 1){
                  secongs.set(seconds.get()+1);
                  text.set("Time: " + secounds);

                }
            }
        };

      public StringProperty getText(){
         return text;
      }
      public void startTimer(){
         timer.play();
      }

}

在用户界面中,您应该绑定(bind)文本。

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        NumberHandler numberHandler = new NumberHander();
        Text textTimer = new Text(x,y,"string");
        textTimer.textproperty.bind(humberHandler.getText());
        numberHandler.startTimer();
    }
}

这只是一种方法。

关于java - 从其他类中的 start() 方法更改文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58321262/

相关文章:

timer - 如何在 flutter 中从零开始计数器计时器?

java - 如果将非法参数传递给 API 方法,何时抛出异常?

c - 定时器实现超时功能

java - 使用 == 确定性比较 double 值

java - javafx中的按钮颜色变化

java - 使用 Javafx 在 HBox 控件中垂直居中标签

java - 如何在 JavaFX 表格 View 中添加按钮

timer - 实时 Linux : disable local timer interrupts

java - 如何实现只有 AtomicInteger 的 Lock?

java - 更新 Gradle 项目库