【问题标题】:Jfreechart get Mouse Co-ordinatesJfreechart 获取鼠标坐标
【发布时间】:2011-05-22 11:38:32
【问题描述】:

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

JFreeChart get mouse coordinates

我一直在使用 OHLC 数据集来绘制图表,虽然我可以正确获取 RangeAxis(在子图中的值中),但我无法从上面示例中收到的 X 轴值中得出任何结果。

我确定我收到的是其他格式的值(不是显示的日期格式),谁能指出我做错了什么?

【问题讨论】:

    标签: jfreechart


    【解决方案1】:

    经过几个小时的实验后解决了。这是完整 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;
    
    
        }
    };
    

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 2011-01-11
      • 2010-09-09
      • 1970-01-01
      • 2015-11-03
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多