JavaFX2中是否有绘制或更新方法(渲染循环),以便我可以在循环中更新UI?

时间:2013-05-23 07:45:43

标签: javafx-2 javafx-8

在Swing中,您为每个执行每一帧的UI组件绘制或更新(Graphics g)方法。您可以将绘图逻辑放在覆盖的方法中并绘制您想要的任何内容。什么是JavaFX2 UI的绘制方法?

我想要做的是我的UI从套接字服务器(另一个线程)接收控制信息。每当收到控制信息时,我都应该更新UI。

有两个问题: 1.控制信息是从不同的线程接收的,它不能直接访问渲染线程。 2.如何不断更新UI?

对于Q1,如果我知道更新功能在哪里(Q2),我有一个解决方案。

我可以声明一个List对象,并将从套接字接收的新控制命令插入到列表中。在渲染循环中,我只能观察List对象,检索未处理的命令,并删除已经处理过的命令。

但是,我在哪里可以找到这样的渲染循环功能?我想也许我也可以用javax.concurrent.Task来做,但我找不到办法。

1 个答案:

答案 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();