问题
I am generating a dynamic chart (XYLineChart) using jFreeChart and I have a field which is not included in the dataset. The field is generated dynamically. I want to include that in my tooltip. Is there any possibility I can do it ?
Here is the flow of the program:
Create Chart using an empty dataset.
Set chartPanel. (I guess here is the place where we define the TooltipGenerator).
Receive dynamic data from socket.
Add data to the dataset. ( Here is the only place where I have the data which I need to have in my tooltip text).
Refresh Chart.
回答1:
The name to be displayed is not included anywhere in the dataset.
As shown here for a custom XYItemLabelGenerator
, you can extend a suitable dataset, e.g. AbstractXYDataset
, to include the required information and access it from your implementation of XYToolTipGenerator
.
回答2:
You don't have to care about data added dynamically to the dataset. Tooltips are created on the fly using the data from the dataset. The individual XYToolTipGenerator
just needs to be assigned to the renderer instance.
As an example, start with the TimeSeriesChartDemo1 class from JFreeChart
, and add an individual XYToolTipGenerator
as shown below.
XYItemRenderer r = plot.getRenderer();
…
// define your own tooltip generator
StandardXYToolTipGenerator tooltipGenerator = new StandardXYToolTipGenerator()
{
@Override
public String generateToolTip(XYDataset dataset, int series, int item)
{
return "Series " + series + " Item: " + item + " Value: "
+ dataset.getXValue(series, item) + ";"
+ dataset.getYValue(series, item);
}
};
// and assign it to the renderer
r.setBaseToolTipGenerator(tooltipGenerator);
来源:https://stackoverflow.com/questions/31279389/dynamic-tool-tip-generator-jfreechart