java - how to draw crosshair on stock barchart -


hi want draw cross hair on barchar .can somone me.i jst want cross hair print x , y cordinates mouse pointing or clicking.i m fine if cross hair prints x , y cordinates on console .here's code

import java.awt.color; import java.awt.dimension; import java.io.bufferedreader; import java.io.filereader; import java.text.dateformat; import java.text.decimalformat; import java.text.simpledateformat; import java.util.date; import java.util.stringtokenizer; import javax.swing.jpanel; import org.jfree.chart.chartcolor; import org.jfree.chart.chartpanel; import org.jfree.chart.chartutilities; import org.jfree.chart.jfreechart; import org.jfree.chart.axis.dateaxis; import org.jfree.chart.axis.numberaxis; import org.jfree.chart.labels.standardxytooltipgenerator; import org.jfree.chart.plot.combineddomainxyplot; import org.jfree.chart.plot.marker; import org.jfree.chart.plot.valuemarker; import org.jfree.chart.plot.xyplot; import org.jfree.chart.renderer.xy.highlowrenderer; import org.jfree.chart.renderer.xy.standardxybarpainter; import org.jfree.chart.renderer.xy.xybarrenderer; import org.jfree.chart.renderer.xy.xyitemrenderer; import org.jfree.data.time.day; import org.jfree.data.time.timeseries; import org.jfree.data.time.timeseriescollection; import org.jfree.data.time.ohlc.ohlcseries; import org.jfree.data.time.ohlc.ohlcseriescollection; import org.jfree.data.xy.intervalxydataset; import org.jfree.data.xy.ohlcdataset; import org.jfree.ui.applicationframe; import org.jfree.ui.refineryutilities;  public class pricevolumechart2 extends applicationframe {      final static string filename    = "d:\\cl.txt";      /**      * default constructor      */     public pricevolumechart2(string title) {         super(title);         jpanel panel = createdemopanel();         panel.setpreferredsize(new dimension(1200, 800));         setcontentpane(panel);     }      private static ohlcdataset createpricedataset(string filename) {         // following data taken http://finance.yahoo.com/         // demo purposes...          ohlcseries s1 = new ohlcseries(filename);          try {             bufferedreader in = new bufferedreader(new filereader(filename));             dateformat df = new simpledateformat("mm/dd/yyyy");             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());                   s1.add(new day(date), open, high, low, close);                 //t1.add(new day(date), close);             }             in.close();         } catch (exception e) {             e.printstacktrace();         }          ohlcseriescollection dataset = new ohlcseriescollection();         dataset.addseries(s1);          return dataset;     }      private static jfreechart createcombinedchart() {         ohlcdataset data1 = createpricedataset(filename);         system.out.println(data1.getitemcount(0));         highlowrenderer renderer1 = new highlowrenderer();         renderer1.setticklength(3);         renderer1.setbasetooltipgenerator(new standardxytooltipgenerator                                             (standardxytooltipgenerator.default_tool_tip_format,                                                      new simpledateformat("d-mmm-yyyy"), new decimalformat("0.00")));         renderer1.setseriespaint(0, color.blue);          dateaxis domainaxis = new dateaxis("date");         numberaxis rangeaxis = new numberaxis("price");         rangeaxis.setnumberformatoverride(new decimalformat("$0.00"));         rangeaxis.setautorange(true);         rangeaxis.setautorangeincludeszero(false);         chartcolor chartcolor=new chartcolor(0, 0, 0);          xyplot plot1 = new xyplot(data1, domainaxis, rangeaxis, renderer1);         plot1.getrangecrosshairpaint();          plot1.setrangepannable(true);          jfreechart chart = new jfreechart("nse nifty", jfreechart.default_title_font, plot1, false);          //chartutilities.applycurrenttheme(chart);          return chart;     }      // create panel     public static jpanel createdemopanel() {         jfreechart chart = createcombinedchart();         return new chartpanel(chart);     }      public static void main(string[] args) {         // todo code application logic here         pricevolumechart2 demo = new pricevolumechart2("jfreechart");         demo.pack();         refineryutilities.centerframeonscreen(demo);         demo.setvisible(true);     }     // download data web } 

this output.n want crosshair tell me x , y coordinates according given values in x , y axis

enter image description here

you can enable trace feature follow mouse, shown here. can add chartmouselistener see chartentity under mouse, shown here.

addendum: given these instatiations,

jfreechart chart = new jfreechart(…); chartpanel = new chartpanel(chart); 

this complete example enables trace:

chartpanel.sethorizontalaxistrace(true); chartpanel.setverticalaxistrace(true); 

this complete example adds chartmouselistener:

chartpanel.addchartmouselistener(new chartmouselistener() {      @override     public void chartmouseclicked(chartmouseevent e) {         final chartentity entity = e.getentity();         system.out.println(entity + " " + entity.getarea());     }      @override     public void chartmousemoved(chartmouseevent e) {     } }); 

Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -