在Swing中,您为每个执行每一帧的UI组件绘制或更新(Graphics g)方法。您可以将绘图逻辑放在覆盖的方法中并绘制您想要的任何内容。什么是JavaFX2 UI的绘制方法?
我想要做的是我的UI从套接字服务器(另一个线程)接收控制信息。每当收到控制信息时,我都应该更新UI。
有两个问题: 1.控制信息是从不同的线程接收的,它不能直接访问渲染线程。 2.如何不断更新UI?
对于Q1,如果我知道更新功能在哪里(Q2),我有一个解决方案。
我可以声明一个List对象,并将从套接字接收的新控制命令插入到列表中。在渲染循环中,我只能观察List对象,检索未处理的命令,并删除已经处理过的命令。
但是,我在哪里可以找到这样的渲染循环功能?我想也许我也可以用javax.concurrent.Task来做,但我找不到办法。
答案 0 :(得分:0)
我想我找到了方法,我使用以下方法,它可以工作。我不知道是否有更好的解决方案
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();