Jfreechart得到鼠标坐标

Mak*_*and 4 jfreechart

我一直在尝试在JfreeChart中获取当前的鼠标坐标,并发现以下解决方案部分工作

JFreeChart获取鼠标坐标

我一直在使用OHLC数据集来绘制图表,虽然我可以正确地获得RangeAxis(意思是在子图值中),但是我无法从上面示例中获取X轴的值.

我确信我收到其他格式的值(不是显示的日期格式),任何人都可以指出我做错了什么?

Mak*_*and 5

经过几个小时的实验,它得到了解决.这是完整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;


    }
};
Run Code Online (Sandbox Code Playgroud)