【发布时间】:2014-02-10 23:44:53
【问题描述】:
我在 Java 中使用JFreeChart 来绘制一个包含 50+ x, y 点的XYLineChart。该图表位于ChartPanel 中,它位于我的JFrame 的JPanels 之一中。
我知道JFreeChart 已经内置了缩放功能,通过鼠标单击和拖动,它会放大/缩小并显示所选“拖动”区域下的点。
我想知道如果我们在按下 CTRL、ALT 或SHIFT 键,即如果用户单击图表上的一个点然后拖动鼠标,它应该像往常一样缩放。但是如果用户在按下 SHIFT 或 ALT 或 CTRL 键的同时单击一个点并拖动,我们应该得到所有点的列表在图表 [拖动区域下方的点] 上选择。这可能吗 ?请让我知道如何去做。
我确实尝试在ChartPanel 中添加一个简单的MouseListener 来检测鼠标何时被按下和释放,但鼠标事件返回的x、y 位置值对应于点击屏幕的位置而不是到图表上各点的实际 x、y 坐标。我需要用户单击并拖动鼠标的所有点的实际坐标,以便计算在哪个点之前按下并拖动鼠标以及释放鼠标的位置,并使用该信息选择拖动下方的多个点区域。
如果有人对此有任何想法,请告诉我。
【问题讨论】:
-
交叉发布here。
-
很抱歉交叉发布,但我已经为这个问题苦苦挣扎了一段时间,希望有人至少向我发送他们关于如何解决这个问题的想法。
-
我尝试在旧版本的 JFreeChart:JFreeChart 1.0.16 中实现此功能,但无法实现。我可以在我的 ChartPanel 上使用 ChartMouseListener 来获取单击某个点时的 x、y 值。但是,为了实现我想要的(选择多个点并显示它们绘制的 x、y 值),我需要在 ChartPanel 上有一个常规的 MouseListener,它可以通过使用 mousePressed() 和 mouseReleased() 来做到这一点,它使用 MouseEvent 而不是图表鼠标事件。如何使用 MouseListener 获得实际绘制的 x、y 值而不是屏幕上的 x、y 点?
-
交叉发帖没问题;该链接让其他人知道现有的答案。
标签: swing jfreechart drag mouselistener chartpanel