【问题标题】:Is there a paint or update method (rendering loop) in JavaFX2 so that I can update the UI in a loop?JavaFX2 中是否有绘制或更新方法(渲染循环),以便我可以循环更新 UI?
【发布时间】:2013-05-18 11:35:21
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: javafx-2 javafx-8


    【解决方案1】:

    我想我找到了方法,我使用以下方法,它可以工作。不知道有没有更好的解决办法

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 2011-07-21
      • 2019-04-17
      • 1970-01-01
      相关资源
      最近更新 更多