如何使用套接字输入使用 JavaFX 制作动态折线图
How can I make a dynamic line chart with JavaFX using a socket input
我已经编写了一些代码来读取套接字输入并在 Double 值的 ArrayList 中输出我想要的数据。我想用当前值不断更新这个 ArrayList 并将它们绘制到 JavaFx 中的折线图中。
如何设置我的 javafx 文件,以便在套接字提供新数据时更新图表?
ObservableLists 的 data in a JavaFX chart is a ObservableList - 每个图表线系列一个 ObservableList。图表监听可观察数据列表的变化,当您修改任何这些 ObservableList 中的任何数据时(由于它们的可观察性),图表将自动更新。所以你真的不需要做太多。
在更改图表数据之前,请将图表的animated 属性设置为合适的值;即,如果您希望图表中的新值直接显示,则关闭动画,或者如果您希望图表中的数据点缓慢移动到新值,则打开动画。
您声明您正在通过套接字接收数据。通常对于传统的套接字 IO,您有一个线程监视套接字以获取新数据 - 这不应该是 JavaFX 应用程序线程,否则您的应用程序 UI 将在等待新数据时挂起。当socket监控线程收到新数据时,不应该直接修改图表数据的ObservableList。相反,它应该将对图表的可观察列表的任何修改包装在 Platform.runLater() 调用中,以便对图表数据的修改发生在 JavaFX 应用程序线程上。
我已经编写了一些代码来读取套接字输入并在 Double 值的 ArrayList 中输出我想要的数据。我想用当前值不断更新这个 ArrayList 并将它们绘制到 JavaFx 中的折线图中。
如何设置我的 javafx 文件,以便在套接字提供新数据时更新图表?
ObservableLists 的 data in a JavaFX chart is a ObservableList - 每个图表线系列一个 ObservableList。图表监听可观察数据列表的变化,当您修改任何这些 ObservableList 中的任何数据时(由于它们的可观察性),图表将自动更新。所以你真的不需要做太多。
在更改图表数据之前,请将图表的animated 属性设置为合适的值;即,如果您希望图表中的新值直接显示,则关闭动画,或者如果您希望图表中的数据点缓慢移动到新值,则打开动画。
您声明您正在通过套接字接收数据。通常对于传统的套接字 IO,您有一个线程监视套接字以获取新数据 - 这不应该是 JavaFX 应用程序线程,否则您的应用程序 UI 将在等待新数据时挂起。当socket监控线程收到新数据时,不应该直接修改图表数据的ObservableList。相反,它应该将对图表的可观察列表的任何修改包装在 Platform.runLater() 调用中,以便对图表数据的修改发生在 JavaFX 应用程序线程上。