2013-10-10 48 views
0

我正在使用JFreeChart的折線圖上工作。我想在我的折線圖上設置工具提示,但是我無法在Servlet上做到這一點。那麼請幫助我在Servlet上設置工具提示?如何在我的JFreeChart上設置工具提示?

XYSeriesCollection dataset = new XYSeriesCollection(); 
for (int i = 0; i < 2; i++) { 

    XYSeries series = new XYSeries("Name"+i); 
    for (int j = 0; j < 10; j++) { 
    series.add(i+j,j+i*j); 
    } 
    dataset.addSeries(series); 
} 

JFreeChart chart= ChartFactory.createXYLineChart("Line Chart Demo 2", "X", "Y", dataset, PlotOrientation.VERTICAL, true, true,false); 

XYPlot plot = (XYPlot) chart.getPlot(); 
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); 
plot.setBackgroundPaint(Color.white); 
plot.setDomainGridlinePaint(Color.white); 
plot.setRangeGridlinePaint(Color.white); 

XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); 
renderer.setShapesVisible(true); 
renderer.setShapesFilled(true); 

Vector<String> ToolTips1 = new Vector<String>(); 
for (int j = 0; j < 10; j++) 
{ 
    ToolTips1.add("First: "+j); 
} 

Vector<String> ToolTips2 = new Vector<String>(); 
for (int j = 0; j < 10; j++) 
{ 
    ToolTips2.add("Second: "+j); 
} 

CustomXYToolTipGenerator generator1 = new CustomXYToolTipGenerator(); 
generator1.addToolTipSeries(ToolTips1); 
CustomXYToolTipGenerator generator2 = new CustomXYToolTipGenerator(); 
generator2.addToolTipSeries(ToolTips2); 

renderer.setSeriesToolTipGenerator(0, generator1); 
renderer.setSeriesToolTipGenerator(1, generator2); 

renderer.setBaseShape(new Ellipse2D.Double(-3.0, -3.0, 8.0, 8.0)); 
plot.setRenderer(renderer); 

response.setContentType("image/png"); 
RenderedImage chartImage=chart.createBufferedImage(500,500); 
ImageIO.write(chartImage,"png",out); 
+0

如果您發佈了一些您已經用於生成圖表的代碼,我們將更容易回答您。然後,我們可以看到您正在使用的課程等。 –

+0

現在我已添加代碼 – varun

回答

2

您可以使用ChartFactory constructor

public static JFreeChart createAreaChart(java.lang.String title, 
        java.lang.String categoryAxisLabel, 
        java.lang.String valueAxisLabel, 
        CategoryDataset dataset, 
        PlotOrientation orientation, 
        boolean legend, 
        boolean tooltips, 
        boolean urls) 

創建具有默認設置的區域圖。此方法返回的圖表對象使用CategoryPlot實例作爲繪圖,其中的域軸爲CategoryAxis,NumberAxis爲範圍軸,AreaRenderer爲渲染器。

參數:

  • 標題 - 圖表標題(空許可)。
  • categoryAxisLabel - 類別軸的標籤(允許爲空)。
  • valueAxisLabel - 值軸的標籤(允許爲null)。
  • 數據集 - 圖表的數據集(允許爲空)。
  • orientation - 繪圖方向(null不允許)。
  • 圖例 - 指定是否需要圖例的標誌。
  • 工具提示 - 配置圖表以生成工具提示?
  • url - 配置圖表以生成URL?

返回:
面積圖。

1
XYToolTipGenerator xyToolTipGenerator = new XYToolTipGenerator() 
{ 
    public String generateToolTip(XYDataset dataset, int series, int item) 
    { 
     Number x1 = dataset.getX(series, item); 
     Number y1 = dataset.getY(series, item); 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append(String.format("<html><p style='color:#0000ff;'>Serie: '%s'</p>", dataset.getSeriesKey(series))); 
     stringBuilder.append(String.format("X:'%d'<br/>", x1.intValue())); 
     stringBuilder.append(String.format("Y:'%d'", y1.intValue())); 
     stringBuilder.append("</html>"); 
     return stringBuilder.toString(); 
    } 
}; 

XYLineAndShapeRenderer render = (XYLineAndShapeRenderer) plot.getRenderer(); 
render.setBaseToolTipGenerator(xyToolTipGenerator); 
+1

如果我可能提出建議,則說明您的代碼可以幫助提問者。 –

+0

Thaks @RüdigerHerrmann!我不知道在varun的代碼中到底發生了什麼問題。但我有一個示例代碼,可以做他想做的事情。這可能是有用的=]。 –

相關問題