我希望在我的Swing应用程序中显示各种各样的数据 - 但每个图表的数据会不断变化。
我的数据行为方式的一个很好的类比是系统的自由和使用内存将如何(可能)在应用程序运行过程中上下波动。我希望图形看起来很好的类比是Windows任务管理器中的CPU使用率图(不是指特定的颜色和网格,而是线图看起来的方式)。
生成图表的最佳方法是什么,我将不断“追加”新的数据点。是定期添加这些点的最佳方法吗?
另外,我应该使用什么图表/图形API?我希望尽可能减少依赖关系,但我接受它们可能是必要的。
tl; dnr :我想在任务管理器中创建类似CPU使用率历史的图表,但在Java中,用于Swing。
答案 0 :(得分:5)
JFreeChart是用Java生成图表的常用选择。
现在,计算机非常强大,您很难找到任何合理的图表解决方案,这对于此应用来说“太慢”。
另请参阅:Using JFreeChart to display recent changes in a time series(链接到@trashgod的道具!)。
答案 1 :(得分:3)
我认为你可以在没有自定义图表应用程序的情况下自己做。
您应该能够将图形点存储在ArrayList中。然后,您可以使用Graphics.drawLine(...)方法连接每个点。
然后您可以使用Swing Timer来安排图表的更新。每次定时器触发时,您都可以从头开始删除多个点,并在末尾添加一些点。然后在自定义组件上调用repaint()。
答案 2 :(得分:2)
看看JChart2D。从网页:
JChart2D是根据OSI批准的GNU LESSER GENERAL PUBLIC LICENSE发布的简约实时图表库。它设计用于显示由跟踪点组成的多条迹线。 JChart2D以单个可配置的swing小部件为中心:Chart2D。
JChart2D用于工程任务,而不用于演示。它的特殊之处在于运行时间 - 以最小的配置开销动态精确显示数据。