我一直在尝试获取 JfreeChart 中的当前鼠标坐标,并发现以下解决方案部分有效
JFreeChart获取鼠标坐标 https://stackoverflow.com/questions/1512112/jfreechart-get-mouse-coordinates/1512195#1512195
我一直在使用 OHLC 数据集来绘制图表,虽然我可以正确获取 RangeAxis(即子图值),但我无法从上面示例中收到的 X 轴值中得出任何结果。
我确信我收到的是其他格式的值(不是显示的日期格式),任何人都可以指出我做错了什么?
经过几个小时的实验后解决了。这是完整的 MouseMotionListener 的代码。刚刚将其添加到图表面板中,瞧! - 有用!
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;
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)