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

Swing JFreeChart选择多个点-鼠标拖动-套索-Java,swing,jfreechart,drag,mouselistener,chartpanel,Swing,Jfreechart,Drag,Mouselistener,Chartpanel,我正在使用Java中的JFreeChart绘制包含50+x,y点的XYLineChart。图表位于我的JFrame的JPanels之一的ChartPanel中 我知道JFreeChart已经内置了缩放功能,通过鼠标点击和拖动,它可以放大/缩小并显示所选“拖动”区域下的点 我想知道,如果我们在按住CTRL、ALT或SHIFT键的同时进行缩放,是否有任何方法可以让它返回点的x、y坐标,也就是说,如果用户单击图表上的某个点,然后拖动鼠标,它应该像往常一样进行缩放。但是,如果用户在按住SHIFT、ALT

我正在使用Java中的
JFreeChart
绘制包含50+x,y点的
XYLineChart
。图表位于我的
JFrame
JPanels
之一的
ChartPanel

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

我想知道,如果我们在按住CTRL、ALT或SHIFT键的同时进行缩放,是否有任何方法可以让它返回点的x、y坐标,也就是说,如果用户单击图表上的某个点,然后拖动鼠标,它应该像往常一样进行缩放。但是,如果用户在按住SHIFT、ALT或CTRL键的同时单击某个点并拖动,我们应该会得到图表上选定的所有点的列表[拖动区域下方的点]。这可能吗?请告诉我怎么做

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

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

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

添加一个
ChartMouseListener
,如图和所示


JFreeChart
之外,引用的示例中说明了使用套索进行多重选择。显示一个矩形。

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

JFreeChart 1.0.17中未实现此功能,但此功能已被禁用 在JFreeChart FSE(“未来状态版”)项目中实施 GitHub:

此回购协议尚未发布,但您可以从中构建它 消息来源。欢迎反馈,我最近没有时间工作 但我想从这次回购中得到一些信息 未来几个月的时间(我的目标是在2014年推出JFreeChart 2.0)。 套索选择来自我几年前写的一些代码 现在,来自KNIME.org的迈克尔·辛斯梅尔已经做了大量的工作 以构造此和数据集选择状态


交叉发布。很抱歉交叉发布,但我已经为这个问题挣扎了一段时间,希望有人至少向我发送他们关于如何解决这个问题的想法。我尝试在JFreeChart的旧版本中实现此功能:JFreeChart 1.0.16,但无法实现。我可以在ChartPanel上使用ChartMouseListener,在单击某个点时获取该点的x、y值。但是,为了实现我想要的功能(选择多个点并显示其打印的x、y值),我需要在ChartPanel上有一个常规的鼠标侦听器,它可以通过使用mousePressed()和MouseRelease()来实现,MouseEvent和MouseRelease()使用MouseEvent而不是ChartMouseEvent。如何使用鼠标侦听器获取实际绘制的x,y值,而不是屏幕上的x,y点;该链接让其他人知道现有的答案。嗨,谢谢你的回复。但是,我想知道如何使用常规的
MouseListener
获得绘制的x,y值。我知道如何使用ChartMouseListener(通过ChartMouseEvent)实现这一点,但它只有两个方法:mouseClicked()和mouseMoved(),而我感兴趣的是使用MouseListener的
MouseEvent
&mousePressed()和mouseReleased()方法来找出鼠标从何处开始拖动到何处。这样我就可以得到水平范围内的所有点,然后检索并选择它们来创建套索效果。有没有办法做到这一点?有没有办法做到我上面提到的?因为在常规的MouseListener中使用ChartMouseEvent而不是MouseEvent,或者在按下或释放鼠标时(如MouseListener的mousePressed()、mouseReleased()方法)调用的
ChartMouseListener
中创建自定义方法都是不可能的,唯一可能的解决方案是,如果有一种方法可以计算标准
MouseListener
中实际绘制的x,y值(基于输出图表的x,y轴值),而不是让它根据屏幕尺寸返回x,y]。如何做到这一点?您可以按照建议使用
getTrigger()
查看原始事件。