Why would showing the chartpanel popup menu activate tooltip help?
Here are some details:
jfreechart-1.0.1.jar
jcommon-1.0.0.jar
jre 1.5.0_07-b03
Code: Select all
abstract class AbstractMopChart extends JPanel implements DataManager2Listener
{
private TimeSeries avgSeries;
private TimeSeries minSeries;
private TimeSeries maxSeries;
ChartPanel chartPanel;
JFreeChart chart;
AbstractMopChart ()
{
super (new BorderLayout ());
setBackground (MopMainPanel.MopPanelColor);
avgSeries = new TimeSeries ("Avg", Hour.class);
minSeries = new TimeSeries ("Min", Hour.class);
maxSeries = new TimeSeries ("Max", Hour.class);
TimeSeriesCollection dataset = new TimeSeriesCollection (avgSeries);
dataset.addSeries (minSeries);
dataset.addSeries (maxSeries);
DateAxis domain = new DateAxis ("Time");
domain.setTickLabelFont (new Font ("SansSerif", Font.PLAIN, 10));
domain.setLabelFont (new Font ("SansSerif", Font.PLAIN, 12));
StandardXYItemRenderer renderer = new StandardXYItemRenderer (StandardXYItemRenderer.LINES);
renderer.setSeriesPaint (0, Color.GREEN);
renderer.setSeriesPaint (1, Color.BLUE);
renderer.setSeriesPaint (2, Color.RED);
XYToolTipGenerator generator = new StandardXYToolTipGenerator (
"Value={2} on {1}",
new SimpleDateFormat ("MMM-d-yyyy"),
new DecimalFormat ("0.00"));
renderer.setToolTipGenerator (generator);
renderer.setStroke(new BasicStroke(2f,
BasicStroke.CAP_BUTT,
BasicStroke.JOIN_BEVEL));
ValueAxis range = createRangeAxis();
XYPlot plot = new XYPlot(dataset, domain, range, renderer);
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
plot.setForegroundAlpha(0.8f);
domain.setAutoRange(true);
domain.setLowerMargin(0.0);
domain.setUpperMargin(0.0);
domain.setTickLabelsVisible(true);
chart = new JFreeChart("Generic",
new Font("SansSerif", Font.BOLD, 14),
plot,
true);
chart.setBackgroundPaint(Color.white);
chartPanel = new ChartPanel(chart);
}
public ValueAxis createRangeAxis ()
{
LogarithmicAxis range = new LogarithmicAxis ("Value");
range.setAllowNegativesFlag (true);
range.setAutoRangeNextLogFlag (true);
range.setStrictValuesFlag (false);
range.setTickLabelFont (new Font("SansSerif", Font.PLAIN, 10));
range.setLabelFont (new Font ("SansSerif", Font.PLAIN, 12));
range.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
return (range);
}
public void clearSeries ()
{
if ((avgSeries != null) &&
(avgSeries.getItemCount () > 0))
{
avgSeries.clear ();
}
if ((minSeries != null) &&
(minSeries.getItemCount () > 0))
{
minSeries.clear ();
}
if ((maxSeries != null) &&
(maxSeries.getItemCount () > 0))
{
maxSeries.clear ();
}
}
public void addAvgMinMax (Class granularity, Date time, Number avg, Number min, Number max)
{
try
{
RegularTimePeriod t = RegularTimePeriod.createInstance (granularity,
time,
TimeZone.getDefault ());
avgSeries.add (t, avg);
minSeries.add (t, min);
maxSeries.add (t, max);
}
catch (Exception e)
{
e.printStackTrace ();
}
}
public void dataError(DataManager2Event dataEvent)
{
}
public void dataRead(DataManager2Event dataEvent)
{
if (dataEvent.getData() != null)
{
if (dataEvent.getData() instanceof ArrayList)
{
clearSeries ();
ArrayList <ArrayList> data = (ArrayList) dataEvent.getData ();
for (ArrayList r : data)
{
addAvgMinMax (Hour.class,
(Date)r.get (0),
(Number)r.get (1),
(Number)r.get (2),
(Number)r.get (3));
}
}
}
}
public void dataWritten(DataManager2Event dataEvent)
{
}
}
-Dennis