我需要能够从MouseListener返回一个点,并确定散点图中的最近点。我正在使用带有XYDataset的JFreeChart。如何在JFreeChart散点图中查找鼠标的最近点?
我在我的ChartPanel中添加了一个鼠标监听器,并试图将这些x,y值与遍历数据并检查其位置时返回的值进行比较。我的代码看起来是这样的:
ValueAxis domainAxis = chartPanel.getXYPlot().getDomainAxis();
ChartArea chartArea = chartPanel.getChartRenderingInfo().getChartArea();
for(int i=0; i < myXYData.getItemCount(0); i++) {
double mouseX = e.getX(); // e is the MouseEvent
double pointX = domainAxis.valueToJava2D(myXYData.getX(0, i), chartArea, RectangleEdge.BOTTOM);
System.out.println("difference is " + (pointX - mouseX));
}
的问题是的MouseEvent相对于报表点左上角的ChartPanel的,所以(0,0)以上职称,离开x轴的轴标签。但是,valueToJava2D方法给出了相对于绘制值的区域的值,因此(0,0)低于图形标题和x轴标签的右侧。这意味着当鼠标直接在我的一个数据点上时,我会得到一个非零的差异!
我该如何解决这种差异?
感谢, 埃里克
交叉发布[这里](http://www.jfree.org/forum/viewtopic.php?f=3&t=115753)。 – trashgod