3

JFreeChart在 Java 中使用来绘制一个XYLineChart包含 50+ x, y 点。该图表位于myChartPanel的 1 中。JPanelsJFrame

我知道JFreeChart已经内置了缩放功能,通过鼠标单击和拖动,它会放大/缩小并显示所选“拖动”区域下的点。

我想知道是否有任何方法可以让它返回点的 x、y 坐标,如果我们在按下CTRLALTSHIFT键的同时进行缩放,即,如果用户单击图表上的一个点然后拖动鼠标,它应该像往常一样缩放。但是,如果用户点击一个点并在按下SHIFTALTCTRL键的同时拖动,我们应该得到一个列表,其中包含图表上选择的所有点[拖动区域下方的点]。这可能吗 ?请让我知道如何去做。

我确实尝试添加一个简单MouseListener的方法ChartPanel来检测鼠标何时被按下和释放,但鼠标事件返回的 x、y 位置值对应于屏幕上单击的位置而不是实际的 x、y 坐标图表上的点。我需要用户单击并拖动鼠标的所有点的实际坐标,以便计算在哪个点之前按下并拖动鼠标以及释放鼠标的位置,并使用该信息选择拖动下方的多个点区域。

如果有人对此有任何想法,请告诉我。

4

2 回答 2

4

如何使用 ? 获得实际绘制的 x、y 值而不是屏幕上的 x、yMouseListener

添加一个ChartMouseListener,如此处和此处所示

除此之外,这里JFreeChart引用的示例说明了使用套索进行多项选择。这里显示了一个行进的蚂蚁矩形。

于 2014-01-21T14:51:37.033 回答
4

这是我在 JFreeChart 论坛中给出的答案:

它没有在 JFreeChart 1.0.17 中实现,但这个功能已经在 GitHub 上的 JFreeChart-FSE(“未来状态版”)项目中实现:

https://github.com/jfree/jfreechart-fse

此 repo 尚未发布,但您可以从源代码构建它。欢迎提供反馈,我最近没有时间处理这个问题,但我想在未来几个月的某个时间从这个 repo 发布一个版本(我的目标是在 2014 年推出 JFreeChart 2.0)。套索选择来自我几年前写的一些代码,但是来自 KNIME.org 的 Michael Zinsmaier 已经做了大量工作来构建这个和数据集选择状态。

于 2014-01-22T08:24:27.893 回答