JFreeChart 如何使用 OHLCSeries 获取 CandlestickChart 的日期值

JFreeChart How to get date value for CandlestickChart using OHLCSeries

我使用 OHLCSeries 生成了 JFreeChart CandlestickChart 。我扩展了 CandlestickRenderer。在 CandlestickRenderer 中,我覆盖了 "public Paint getItemPaint(int series, int item)" ,其中我需要每个斯托克的日期信息来做一些事情,但我不知道如何获取它,请帮助我解决它。

部分代码如下:

       OHLCSeries ohlcSeries = new OHLCSeries("Price");
       for(Records record : recordslist ) {
           double h =...;
           ....
           LocalDate actionday = record.getRecordsDay ();
           int year = actionday.getYear();
           int month = actionday.getMonthValue();
           int day = actionday.getDayOfMonth();
           ohlcSeries.add(new Day(day,month,year), open, high, low, close);
       }
       OHLCSeriesCollection candlestickDataset.addSeries(ohlcSeries);
       JFreeChart candlestickChart = ChartFactory.createCandlestickChart("", "","", candlestickDataset, true);

       DateAxis  dayAxis = new DateAxis (); 
       candlestickChart.getXYPlot().setDomainAxis(dayAxis);

       class AnalysisCandlestickRenderer extends CandlestickRenderer {
            public Paint getItemPaint(int series, int item) {
                //here I need every stoke's date info , how can I get it?
            }
       }

如相关 example, you can access the required field in your dataset, an OHLCSeriesCollection, using the series and item values passed to your implementation of getItemPaint() in your custom CandlestickRenderer. Starting form this complete example 中所建议,以下渲染器生成显示的数据值。

代码:

private final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();
…
class AnalysisCandlestickRenderer extends CandlestickRenderer {

    @Override
    public Paint getItemPaint(int series, int item) {
        OHLCSeries currentSeries = seriesCollection.getSeries(series);
        System.out.println(series + ": " + currentSeries.getPeriod(item));
        return super.getItemPaint(item, item);
    }
}
…
CandlestickRenderer r = new AnalysisCandlestickRenderer();
chart.getXYPlot().setRenderer(r);

控制台:

1: Wed Jan 01 12:00:00 EST 2014
1: Wed Jan 01 12:01:00 EST 2014
1: Wed Jan 01 12:02:00 EST 2014
1: Wed Jan 01 12:03:00 EST 2014
1: Wed Jan 01 12:04:00 EST 2014
0: Wed Jan 01 12:00:00 EST 2014
0: Wed Jan 01 12:01:00 EST 2014
0: Wed Jan 01 12:02:00 EST 2014
0: Wed Jan 01 12:03:00 EST 2014
0: Wed Jan 01 12:04:00 EST 2014
0: Wed Jan 01 12:05:00 EST 2014
0: Wed Jan 01 12:06:00 EST 2014
0: Wed Jan 01 12:07:00 EST 2014
0: Wed Jan 01 12:08:00 EST 2014
0: Wed Jan 01 12:09:00 EST 2014

图表: