我想知道如何为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
}
}
答案 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
});
}
}