0

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

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

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

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

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

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

4

1 回答 1

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();
于 2013-05-23T08:05:09.920 回答