java - Obtain series identifiers when clicking on XYPlot's series -
i have 4 series plotted on xyplot
. want obtain series id when click on xyplot
(see //int seriesid = ???;
). possible?
_chartpanel.addchartmouselistener(new chartmouselistener() { @override public void chartmouseclicked(chartmouseevent cme) { mouseevent me = cme.gettrigger(); xyplot plot = (xyplot) cme.getchart().getplot(); if (me.getclickcount() == 2) { plot.clearannotations(); } else { rectangle2d dataarea = _chartpanel.getscreendataarea(); plot.clearannotations(); valueaxis xaxis = plot.getdomainaxis(); valueaxis yaxis = plot.getrangeaxis(); double x = xaxis.java2dtovalue(cme.gettrigger().getx(), dataarea, rectangleedge.bottom); double y = yaxis.java2dtovalue(cme.gettrigger().gety(), dataarea, rectangleedge.left); if (!xaxis.getrange().contains(x)) { x = double.nan; //int seriesid = ???; decimalformat df = new decimalformat("#.##"); df.setroundingmode(roundingmode.ceiling); xypointerannotation pt = new xypointerannotation("lat: " + df.format(y) + "\n lon: " + df.format(x), x, y, 0.2); pt.setbackgroundpaint(new color(103,154,236)); // pt.setarrowpaintnew color(103,154,236)d); pt.setfont(_font); pt.setpaint(color.light_gray); plot.addannotation(pt); } }
as shown here, can retrieve chartentity
chartmouseevent
. chartentity
of type xyitementity
, can dataset via getdataset()
, series index via getseriesindex()
.
chartentity ce = cme.getentity(); if (ce instanceof xyitementity) { xyitementity e = (xyitementity) ce; system.out.println("dataset: " + e.getdataset()); system.out.println("series index: " + e.getseriesindex()); }
Comments
Post a Comment