这个恐怕难度大了。
就算你用jfreechart,在html上也是现实生成的是图片,这样也就没法用java了。
如果用javascript,hoho, 难度不是一点点。

解决方案 »

  1.   

    1 图片是实现不了的
    2 但你可以在生成图片后,使用热区来实现,也就是用Map使用圆形热区或者方形,设置图片的一块区域,然后设置 onmouseover方法。
    剩下的要显示啥,你自己思考吧
      

  2.   

    你生成png图片是无法实现这个效果的,必须要用swing,这个例子你可以参考一下
    package demo;import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.io.PrintStream;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import javax.swing.JPanel;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.DateAxis;
    import org.jfree.chart.axis.DateTickMarkPosition;
    import org.jfree.chart.labels.StandardXYToolTipGenerator;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.XYBarRenderer;
    import org.jfree.chart.title.TextTitle;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.data.time.Year;
    import org.jfree.data.xy.IntervalXYDataset;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;public class XYBarChartDemo1 extends ApplicationFrame
    {
      public XYBarChartDemo1(String paramString)
      {
        super(paramString);
        JPanel localJPanel = createDemoPanel();
        localJPanel.setPreferredSize(new Dimension(500, 270));
        setContentPane(localJPanel);
      }  private static JFreeChart createChart(IntervalXYDataset paramIntervalXYDataset)
      {
        JFreeChart localJFreeChart = ChartFactory.createXYBarChart("State Executions - USA", "Year", true, "Number of People", paramIntervalXYDataset, PlotOrientation.VERTICAL, true, false, false);
        localJFreeChart.addSubtitle(new TextTitle("Source: http://www.amnestyusa.org/abolish/listbyyear.do", new Font("Dialog", 2, 10)));
        localJFreeChart.setBackgroundPaint(Color.white);
        XYPlot localXYPlot = (XYPlot)localJFreeChart.getPlot();
        XYBarRenderer localXYBarRenderer = (XYBarRenderer)localXYPlot.getRenderer();
        StandardXYToolTipGenerator localStandardXYToolTipGenerator = new StandardXYToolTipGenerator("{1} = {2}", new SimpleDateFormat("yyyy"), new DecimalFormat("0"));
        localXYBarRenderer.setBaseToolTipGenerator(localStandardXYToolTipGenerator);
        localXYBarRenderer.setMargin(0.10000000000000001D);
        localXYPlot.setBackgroundPaint(Color.lightGray);
        localXYPlot.setRangeGridlinePaint(Color.white);
        DateAxis localDateAxis = (DateAxis)localXYPlot.getDomainAxis();
        localDateAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
        localDateAxis.setLowerMargin(0.01D);
        localDateAxis.setUpperMargin(0.01D);
        return localJFreeChart;
      }  private static IntervalXYDataset createDataset()
      {
        TimeSeries localTimeSeries = new TimeSeries("Executions", "Year", "Count", Year.class);
        try
        {
          localTimeSeries.add(new Year(1976), new Integer(0));
          localTimeSeries.add(new Year(1977), new Integer(1));
          localTimeSeries.add(new Year(1978), new Integer(0));
          localTimeSeries.add(new Year(1979), new Integer(2));
          localTimeSeries.add(new Year(1980), new Integer(0));
          localTimeSeries.add(new Year(1981), new Integer(1));
          localTimeSeries.add(new Year(1982), new Integer(2));
          localTimeSeries.add(new Year(1983), new Integer(5));
          localTimeSeries.add(new Year(1984), new Integer(21));
          localTimeSeries.add(new Year(1985), new Integer(18));
          localTimeSeries.add(new Year(1986), new Integer(18));
          localTimeSeries.add(new Year(1987), new Integer(25));
          localTimeSeries.add(new Year(1988), new Integer(11));
          localTimeSeries.add(new Year(1989), new Integer(16));
          localTimeSeries.add(new Year(1990), new Integer(23));
          localTimeSeries.add(new Year(1991), new Integer(14));
          localTimeSeries.add(new Year(1992), new Integer(31));
          localTimeSeries.add(new Year(1993), new Integer(38));
          localTimeSeries.add(new Year(1994), new Integer(31));
          localTimeSeries.add(new Year(1995), new Integer(56));
          localTimeSeries.add(new Year(1996), new Integer(45));
          localTimeSeries.add(new Year(1997), new Integer(74));
          localTimeSeries.add(new Year(1998), new Integer(68));
          localTimeSeries.add(new Year(1999), new Integer(98));
          localTimeSeries.add(new Year(2000), new Integer(85));
          localTimeSeries.add(new Year(2001), new Integer(66));
          localTimeSeries.add(new Year(2002), new Integer(71));
          localTimeSeries.add(new Year(2003), new Integer(65));
          localTimeSeries.add(new Year(2004), new Integer(59));
          localTimeSeries.add(new Year(2005), new Integer(60));
        }
        catch (Exception localException)
        {
          System.err.println(localException.getMessage());
        }
        TimeSeriesCollection localTimeSeriesCollection = new TimeSeriesCollection(localTimeSeries);
        return localTimeSeriesCollection;
      }  public static JPanel createDemoPanel()
      {
        return new ChartPanel(createChart(createDataset()));
      }  public static void main(String[] paramArrayOfString)
      {
        XYBarChartDemo1 localXYBarChartDemo1 = new XYBarChartDemo1("State Executions - USA");
        localXYBarChartDemo1.pack();
        RefineryUtilities.centerFrameOnScreen(localXYBarChartDemo1);
        localXYBarChartDemo1.setVisible(true);
      }
    }
      

  3.   

    ChartUtilities.writeImageMap(pw, fileName, info,false);
    这句就是设置图片热点的,把这句加上,在jsp页面中的img标签中再加上usemap="#<%= fileName %>"
    就可以显示了
      

  4.   

    6楼能说清楚点吗?官方的demo上有,可是哦看不懂