Javafx 2 JavaFX2中是否有绘制或更新方法(渲染循环),以便在循环中更新UI?
在Swing中,对于执行每个帧的每个UI组件,都有绘制或更新(Graphics g)方法。您可以将绘图逻辑放在重写的方法中,然后绘制所需的任何内容。JavaFX2UI的绘制方法是什么 我想做的是我的UI从套接字服务器(另一个线程)接收控制信息。每当收到控件信息时,我都应该更新UI 有两个问题: 1.控件信息来自不同的线程,无法直接访问渲染线程。 2.如何不断更新用户界面 对于Q1,我有一个解决方案,如果我知道更新函数在哪里(Q2) 我可以声明一个列表对象,并将从套接字接收的新控制命令插入列表。在渲染循环中,我可以观察列表对象,检索未处理的命令,并删除已处理的命令Javafx 2 JavaFX2中是否有绘制或更新方法(渲染循环),以便在循环中更新UI?,javafx-2,javafx-8,Javafx 2,Javafx 8,在Swing中,对于执行每个帧的每个UI组件,都有绘制或更新(Graphics g)方法。您可以将绘图逻辑放在重写的方法中,然后绘制所需的任何内容。JavaFX2UI的绘制方法是什么 我想做的是我的UI从套接字服务器(另一个线程)接收控制信息。每当收到控件信息时,我都应该更新UI 有两个问题: 1.控件信息来自不同的线程,无法直接访问渲染线程。 2.如何不断更新用户界面 对于Q1,我有一个解决方案,如果我知道更新函数在哪里(Q2) 我可以声明一个列表对象,并将从套接字接收的新控制命令插入列表。在
但是,在哪里可以找到这样的渲染循环函数?我想也许我也可以用javax.concurrent.Task来完成,但我没有找到一种方法。我想我找到了这个方法,我使用下面的方法,它可以工作。我不知道是否有更好的解决办法
final Duration oneFrameAmt = Duration.millis(1000/10);
final KeyFrame oneFrame = new KeyFrame(oneFrameAmt,new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
//put UI update here
}
});
TimelineBuilder.create().cycleCount(Animation.INDEFINITE)
.keyFrames(oneFrame)
.build()
.play();
final Duration oneFrameAmt=Duration.millis(1000/10);
最终关键帧oneFrame=新关键帧(oneFrameAmt,neweventhandler()){
@凌驾
公共无效句柄(ActionEvent ActionEvent){
//将UI更新放在这里
}
});
TimelineBuilder.create().cycleCount(Animation.Unfinite)
.关键帧(一帧)
.build()
.play();