你如何为javafx添加勾号?

时间:2014-09-07 18:18:32

标签: java javafx initialization javafx-2

我想知道如何为javafx添加勾号。通过滴答我的意思是一个更新场景的重复线程。我尝试了一个正常的线程,但我不断得到错误,这不是应用程序线程。我希望从初始化方法开始,这是我的MainContol类的一个大大简化的版本:

package application;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.fxml.Initializable;

public class MainControl implements Initializable{
    public void initialize(URL arg0, ResourceBundle arg1) {
          // Tick goes here
    }
}

2 个答案:

答案 0 :(得分:3)

我认为你要找的是时间轴。时间轴创建一个重复设定次数或无限次的线程,直到您终止它为止 以下是你的意思:

<强> MainControl:

package application;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.animation.TimelineBuilder;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.Initializable;
import javafx.util.Duration;

@SuppressWarnings("deprecation")
public class MainControl implements Initializable{
    public void initialize(URL arg0, ResourceBundle arg1) {
    Timeline tick = TimelineBuilder.create()//creates a new Timeline
     .keyFrames(
       new KeyFrame(
            new Duration(10),//This is how often it updates in milliseconds
            new EventHandler<ActionEvent>() {
                  public void handle(ActionEvent t) {
                       //You put what you want to update here
                  }
            }
        )
     )
    .cycleCount(Timeline.INDEFINITE)
    .build();
tick.play();//Starts the timeline
    }
}

我希望这会有所帮助

答案 1 :(得分:1)

如果你碰巧使用Java 8,那么使用ReactFX

是一回事
public class MainControl implements Initializable{
    public void initialize(URL arg0, ResourceBundle arg1) {
        EventStreams.ticks(Duration.ofMillis(10)).subscribe(() -> {
            //You put what you want to update here
        });
    }
}