我在Java中使用JFreeChart
绘制一个包含50多个x,y点的XYLineChart
。该图表位于我ChartPanel
JPanels
的{{1}}中的JFrame
。
我知道JFreeChart
已经内置了缩放功能,在鼠标单击和拖动时,它会放大/缩小并显示所选“拖动”区域下的点。
我想知道如果我们在按下 CTRL , ALT 时进行缩放,是否有任何方法让它返回点的x,y坐标或 SHIFT 键,即如果用户点击图表上的某个点然后拖动鼠标,它应该像往常一样缩放。但是如果用户在按下 SHIFT 或 ALT 或 CTRL 键的同时点击一个点并拖动,我们应该得到所有点的列表在图表上选择[拖动区域下方的点]。这可能吗 ?请告诉我如何去做。
我确实尝试向MouseListener
添加一个简单的ChartPanel
来检测鼠标何时按下&已释放,但鼠标事件返回的x,y位置值对应于Click on screen&而不是图表上各点的实际x,y坐标。我需要用户点击的所有点的实际坐标并将鼠标拖过,以便计算在哪个点之前按下并拖动鼠标。释放鼠标的位置,并使用该信息选择拖动区域下方的多个点。
如果有人对此有任何疑问,请告诉我。
答案 0 :(得分:4)
如何使用
MouseListener
获取屏幕上实际绘制的x,y值而不是x,y点?
添加ChartMouseListener
,如图所示here和here。
在JFreeChart
之外,带有套索的多项选择在引用的示例here中说明。显示marching ants矩形here。
答案 1 :(得分:4)
这是我在JFreeChart论坛上给出的答案:
它没有在JFreeChart 1.0.17中实现,但是这个功能已经实现了 在JFreeChart-FSE(“未来国家版”)项目中实施 GitHub的:
https://github.com/jfree/jfreechart-fse
此回购没有发布,但您可以从中构建它 来源。欢迎反馈,我最近没有时间工作 关于这一点,但我想从这个回购中获得一些发布 未来几个月的时间(我的目标是在2014年拥有JFreeChart 2.0)。 套索的选择来自几年前我写的一些代码 现在,来自KNIME.org的Michael Zinsmaier做了大量的工作 构造它和数据集选择状态。