JFreeChart选择多个点 - 鼠标拖动 - 套索 - Java

时间:2014-01-21 11:43:29

标签: swing jfreechart drag mouselistener chartpanel

我在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坐标。我需要用户点击的所有点的实际坐标并将鼠标拖过,以便计算在哪个点之前按下并拖动鼠标。释放鼠标的位置,并使用该信息选择拖动区域下方的多个点。

如果有人对此有任何疑问,请告诉我。

2 个答案:

答案 0 :(得分:4)

  

如何使用MouseListener获取屏幕上实际绘制的x,y值而不是x,y点?

添加ChartMouseListener,如图所示herehere

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做了大量的工作   构造它和数据集选择状态。