1

我希望在我的 Swing 应用程序中拥有显示各种数据的图表——但每个图表的数据将不断变化。

一个很好的类比我的数据的行为方式是系统的可用内存和已用内存(可能)在整个应用程序运行过程中如何上升和下降。我希望图表看起来如何的一个很好的类比是 Windows 任务管理器中的 CPU 使用率图表(不是指特定的颜色和网格,而是线图的外观)。

生成图表的最佳方法是什么,我将不断“附加”新数据点。定期添加这些点的最佳方法是什么?

另外,我应该使用什么图表/绘图 API?我想保持尽可能小的依赖关系,但我接受它们可能是必要的。

tl;dnr:我想在任务管理器中制作一个类似于 CPU 使用历史记录的图表,但在 Java 中,用于 Swing。

4

3 回答 3

5

JFreeChart是在 Java 中生成图表的常见选择。

如今,计算机功能如此强大,以至于您很难找到任何合理的图表解决方案,但对于该应用程序来说“太慢”了。


另请参阅:使用 JFreeChart 显示时间序列中的最近更改(链接到@trashgod的道具!)。

于 2011-03-02T03:00:56.857 回答
3

我认为您可以在没有自定义图表应用程序的情况下自己完成此操作。

您应该能够将图形点存储在 ArrayList 中。然后可以使用 Graphics.drawLine(...) 方法连接每个点。

然后,您可以使用 Swing Timer 来安排对图表的更新。每次计时器触发时,您都可以从开头删除一些点并在结尾添加一些点。然后在自定义组件上调用 repaint()。

于 2011-03-02T03:31:41.883 回答
2

看看JChart2D。从网页:

JChart2D 是一个简约的实时图表库,在 OSI 批准的 GNU LESSER GENERAL PUBLIC LICENSE 下发布。它旨在显示由跟踪点组成的多个跟踪。JChart2D 以一个可配置的摆动小部件为中心:Chart2D。
JChart2D 用于工程任务而不是演示。它的专长是运行时——以最小的配置开销动态精确地显示数据。
于 2011-03-02T13:14:53.940 回答