我一直在尝试获取JfreeChart中的当前鼠标坐标,并发现以下解决方案只部分生效:JFreeChart get mouse coordinates。我一直在使用OHLC数据集来绘制图表,虽然我能够正确地获取RangeAxis(即子图值),但是我无法理解从上述示例中收到的X轴值。我确定我以某种其他格式接收到了这些值(而不是显示的日期格式),请问我做错了什么?
经过几个小时的实验,我解决了问题。这是一个完整的MouseMotionListener代码。只需将其添加到chartPanel中即可!-它可以工作! chartY返回正确的Y轴值,dateString返回完整的日期。在OHLC图表中尝试过,看起来很好。
MouseMotionListener mouselisten = new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
//
}
public void mouseMoved(MouseEvent e) {
Point2D p = e.getPoint();
Rectangle2D plotArea = chartPanel.getScreenDataArea();
XYPlot plot = (XYPlot) chart.getPlot(); // your plot
double chartX = plot.getDomainAxis().java2DToValue(p.getX(), plotArea, plot.getDomainAxisEdge());
double chartY = plot.getRangeAxis().java2DToValue(p.getY(), plotArea, plot.getRangeAxisEdge());
DecimalFormat dfT = new DecimalFormat("00");
GregorianCalendar gc = new GregorianCalendar();
long lDte = (long)chartX;
Date dtXX = new Date(lDte);
gc.setTime(dtXX);
String sDD = dfT.format(Double.valueOf(String.valueOf(gc.get(GregorianCalendar.DAY_OF_MONTH))));
String sMM = dfT.format(Double.valueOf(String.valueOf(gc.get(GregorianCalendar.MONTH)+1)));
String sYY = dfT.format(Double.valueOf(String.valueOf(gc.get(GregorianCalendar.YEAR))));
String dateString = sDD +"/"+ sMM +"/"+ sYY;
}
};