point selected

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
ssaraceni
Posts: 14
Joined: Wed Apr 02, 2008 4:37 pm

point selected

Post by ssaraceni » Fri May 09, 2008 9:44 am

hi, is it possible to know what point the user has selected with mouse in a XYLineChart? How?
I need to know the X and Y values for the selected point.
Simone

sreehari.ojili
Posts: 14
Joined: Tue May 06, 2008 5:57 am

Post by sreehari.ojili » Fri May 09, 2008 11:03 am

if u want show selected x and y values u can show by using tooltip feature...

Code: Select all

renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
if u want to know selected values u will get by using URL generator, it will pass selected values as parameters in query string..

Code: Select all

renderer.setItemURLGenerator(new StandardCategoryURLGenerator("AudienceTimelineChart.jsp"));
while saving you need to passing ChartRenderingInfo Obj..

Code: Select all

final ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
	       final File file1 = new File("C:/reports/AudienceTimelineChart.png");
	       ChartUtilities.saveChartAsPNG(file1, chart, 600, 400, info);
---sreehari

ssaraceni
Posts: 14
Joined: Wed Apr 02, 2008 4:37 pm

Post by ssaraceni » Fri May 09, 2008 1:17 pm

thanks for reply.
I use JFreeChart 1.0.9 and I've added the line:

Code: Select all

renderer.setSeriesToolTipGenerator(0, new XYTooltipListener());
to show the point value selected for series 0, where XYTooltipListener is the class:

Code: Select all

class XYTooltipListener implements XYToolTipGenerator,ChartProgressListener {

		@Override
		public String generateToolTip(XYDataset dataset, int series, int item) {
			String s="<html>"+dataset.getSeriesKey(series).toString()+":<br>ID = "+item + " (";
			s+="X: "+dataset.getXValue(series, item);
			s+=" ; Y: "+dataset.getYValue(series, item)+")</html>";
			return s;
		}
		
		@Override
		public void chartProgress(ChartProgressEvent event) {
			if (event.getType() != ChartProgressEvent.DRAWING_FINISHED) {
	            return;
	        }
			if (plot!=null){
				XYDataset dataset = plot.getDataset();
                double xx = plot.getDomainCrosshairValue();	//X
                
               // .............................
			}
		}
		
	}
Now I solve my problem adding this class as listener for chart
Simone

Locked