Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFreeChart烛台指针_Java_Jfreechart_Candlestick Chart - Fatal编程技术网

Java JFreeChart烛台指针

Java JFreeChart烛台指针,java,jfreechart,candlestick-chart,Java,Jfreechart,Candlestick Chart,我有这样的JFreeChart: 我想将鼠标指针添加到图表中,类似于HighCharts使用的: 以下是我创建JFreeChart的版本: import org.jfree.data.xy.AbstractXYDataset; import org.jfree.data.xy.DefaultOHLCDataset; import org.jfree.data.xy.*; import org.jfree.chart.*; import org.jfree.chart.axis.*; impo

我有这样的JFreeChart:

我想将鼠标指针添加到图表中,类似于HighCharts使用的:

以下是我创建JFreeChart的版本:

import org.jfree.data.xy.AbstractXYDataset;
import org.jfree.data.xy.DefaultOHLCDataset;
import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.CandlestickRenderer;
import java.awt.*;
import java.io.*;
import java.net.URL;
import java.text.*;
import java.util.*;


public class ChartOHLC extends ChartPanel {

    public ChartOHLC() {
        super(dajGraf());
        setMaximumDrawHeight(2000);
        setMaximumDrawWidth(3000);
    }

    public static JFreeChart dajGraf() {

        // premenne
        String stockSymbol = "AAPL";
        final DateAxis domainAxis = new DateAxis("Date");
        NumberAxis rangeAxis = new NumberAxis("Price");
        CandlestickRenderer renderer = new CandlestickRenderer();
        XYDataset dataset = getDataSet(stockSymbol);
        XYPlot mainPlot = new XYPlot(dataset, domainAxis, rangeAxis, renderer);

        //Do some setting up, see the API Doc
        renderer.setSeriesPaint(0, Color.BLACK);
        renderer.setDrawVolume(false);
        rangeAxis.setAutoRangeIncludesZero(false);

        //Now create the chart and chart panel
        JFreeChart chart = new JFreeChart(null, null, mainPlot, false);
        mainPlot.setDomainPannable(true);
        mainPlot.setRangePannable(true);
        return chart;
    }

   private static AbstractXYDataset getDataSet(String stockSymbol) {
        //This is the dataset we are going to create
        DefaultOHLCDataset result;
        //This is the data needed for the dataset
        OHLCDataItem[] data;
        //This is where we go get the data, replace with your own data source
        data = getData(stockSymbol);
        //Create a dataset, an Open, High, Low, Close dataset
        result = new DefaultOHLCDataset(stockSymbol, data);
        return result;
    }

   private static OHLCDataItem[] getData(String stockSymbol) {
        ArrayList<OHLCDataItem> dataItems = new ArrayList<OHLCDataItem>();
        try {
            String strUrl = "http://ichart.yahoo.com/table.csv?s=" + stockSymbol + "&a=2&b=1&c=2014&d=3&e=1&f=2014&g=d&ignore=.csv";
            System.out.println(strUrl);
            URL url = new URL(strUrl);
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            DateFormat df = new SimpleDateFormat("y-M-d");
            String inputLine;
            in.readLine();
            while ((inputLine = in.readLine()) != null) {
                StringTokenizer st = new StringTokenizer(inputLine, ",");
                Date date = df.parse(st.nextToken());
                double open = Double.parseDouble(st.nextToken());
                double high = Double.parseDouble(st.nextToken());
                double low = Double.parseDouble(st.nextToken());
                double close = Double.parseDouble(st.nextToken());
                double volume = Double.parseDouble(st.nextToken());
                double adjClose = Double.parseDouble(st.nextToken());
                OHLCDataItem item = new OHLCDataItem(date, open, high, low, close, volume);
                dataItems.add(item);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }

        //Data from Yahoo is from newest to oldest. Reverse so it is oldest to newest
        Collections.reverse(dataItems);

        //Convert the list into an array
        OHLCDataItem[] data = dataItems.toArray(new OHLCDataItem[dataItems.size()]);
        return data;
    }

}
import org.jfree.data.xy.AbstractXYDataset;
导入org.jfree.data.xy.DefaultOHLCDataset;
导入org.jfree.data.xy.*;
导入org.jfree.chart.*;
导入org.jfree.chart.axis.*;
导入org.jfree.chart.plot.XYPlot;
导入org.jfree.chart.renderer.xy.CandlestickRenderer;
导入java.awt.*;
导入java.io.*;
导入java.net.URL;
导入java.text.*;
导入java.util.*;
公共类ChartOHLC扩展ChartPanel{
公共宪章(){
super(dajGraf());
设置最大牵引高度(2000);
设置最大绘图宽度(3000);
}
公共静态JFreeChart dajGraf(){
//普雷梅恩
字符串stockSymbol=“AAPL”;
最终日期轴域轴=新日期轴(“日期”);
NumberAxis rangeAxis=新的NumberAxis(“价格”);
烛台渲染器=新烛台渲染器();
XYDataset数据集=getDataSet(stockSymbol);
XYPlot mainPlot=新的XYPlot(数据集、域轴、范围轴、渲染器);
//进行一些设置,请参阅API文档
渲染器.setSeriesPaint(0,颜色.黑色);
.setDrawVolume(false);
rangeAxis.SetAutoRangeIncludeZero(假);
//现在创建图表和图表面板
JFreeChart图表=新的JFreeChart(空、空、主绘图、假);
mainPlot.setDomainPannable(true);
mainPlot.SetRangePanEnable(真);
收益表;
}
私有静态AbstractXYDataset getDataSet(字符串stockSymbol){
//这是我们将要创建的数据集
DefaultOHLCDataset结果;
//这是数据集所需的数据
OHLCDataItem[]数据;
//这是我们获取数据的地方,替换为您自己的数据源
数据=获取数据(stockSymbol);
//创建一个数据集,一个开放的、高的、低的、封闭的数据集
结果=新的DefaultOHLCDataset(stockSymbol,数据);
返回结果;
}
私有静态OHLCDataItem[]getData(字符串stockSymbol){
ArrayList dataItems=新的ArrayList();
试一试{
字符串strUrl=”http://ichart.yahoo.com/table.csv?s=“+stockSymbol+”&a=2&b=1&c=2014&d=3&e=1&f=2014&g=d&ignore=0.csv”;
系统输出打印LN(strUrl);
URL=新URL(strUrl);
BufferedReader in=新的BufferedReader(新的InputStreamReader(url.openStream());
DateFormat df=新的简化格式(“y-M-d”);
字符串输入线;
in.readLine();
而((inputLine=in.readLine())!=null){
StringTokenizer st=新的StringTokenizer(inputLine,“,”);
Date-Date=df.parse(st.nextToken());
double open=double.parseDouble(st.nextToken());
double-high=double.parseDouble(st.nextToken());
double-low=double.parseDouble(st.nextToken());
double close=double.parseDouble(st.nextToken());
double volume=double.parseDouble(st.nextToken());
double adjClose=double.parseDouble(st.nextToken());
OHLCDataItem=新的OHLCDataItem(日期、开盘、高位、低位、收盘、成交量);
数据项。添加(项);
}
in.close();
}捕获(例外e){
e、 printStackTrace(System.err);
}
//来自雅虎的数据是从最新到最旧的。相反,它是从最旧到最新的
收款。反向(数据项);
//将列表转换为数组
OHLCDataItem[]data=dataItems.toArray(新的OHLCDataItem[dataItems.size()]);
返回数据;
}
}

是否可以将鼠标指针添加到烛台JFreeChart?

我通常使用工具提示。