JFreeChart:如何获取XYItemEntity的坐标?

时间:2015-06-15 10:28:11

标签: java swing jfreechart

我已经坚持这个问题很长一段时间了。我需要属于XYItemEntity的某些点的坐标。我正在绘制烛台图表,并想知道该项目的开盘价,收盘价,高价,低价的坐标是什么。 enter image description here

有没有办法实现这个目标?

编辑:问题类似于这个问题:https://stackoverflow.com/questions/30801444/jfreecharthow-to-get-coordinates-of-a-chartentity-and-snap-mouse-cursor-to-the但从那以后我改变了方法。我想要实现的目标如下: 我画的是Candelistick图表。如上所述,我希望用户能够将鼠标“捕捉”到蜡烛的4个值之一:高,低,开,关。为了实现这个功能,我想我会在ChartPanel上构建一个Points集合,它们对应于当前显示的所有蜡烛的值。然后,通过将ChartMouseListener添加到ChartPanel,在chartMouseMoved方法中,我将检查光标是否非常接近这些点。 在这里,我将MouseChartListener添加到ChartPanel:

chartPanel.addChartMouseListener(new MyChartMouseListener());

在这个方法中,我想检查光标是否靠近任何蜡烛:

@Override
    public void chartMouseClicked(ChartMouseEvent chartMouseEvent) {
        int x = chartMouseEvent.getTrigger().getX();
        int y = chartMouseEvent.getTrigger().getY();
        getCandleCloseToCursor(x,y);
    }

我的getCandleCloseToCursor方法应该如何?

private Point getCandleCloseToCursor(int x, int y) {
        //return point that belongs to the candle near the x,y position;
        //either high, low, close, open position
        return null;
    }

希望现在有点清楚。

1 个答案:

答案 0 :(得分:1)

CandlestickRendererChartEntity的实施中收集drawItem()个信息,但它缺少您想要的解决方案。所需的几何图形是针对每个项目即时计算的,并且从不显式存储。如果没有全新的渲染器,一种方法是使用从JTable获取的相关数据更新相邻的OHLCDataset。授予ChartMouseListener OHLCDatasetTableModel访问权限,获取对JTable数据集的引用,并使用其访问者方法履行application.yml合同,如图所示TableModel 。具体细节取决于您的要求,但您可以利用# app/models/settings.rb class Settings < Settingslogic source "#{Rails.root}/config/application.yml" namespace Rails.env end here