2009-03-20 8 views
2

HI Tous:
J'utilise ce qui suit pour illustrer le graphique linéaire. quand je cours le code ci-dessous, j'obtiens la fenêtre mais elle est vide et n'affiche pas le graphique. S'il vous plaît aidez-moi et dites-moi comment afficher le graphique linéaire en page html en utilisant le code ci-dessous.
Comment afficher un graphique linéaire en utilisant JFreeChart dans jsp?

import org.jfree.chart.*; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.xy.*; 

public class xyLine { 

    public static void main(String arg[]) { 
     XYSeries series = new XYSeries("Average Weight"); 
     series.add(20.0, 20.0); 
     series.add(40.0, 25.0); 
     series.add(55.0, 50.0); 
     series.add(70.0, 65.0); 
     XYDataset xyDataset = new XYSeriesCollection(series); 
     JFreeChart chart = ChartFactory.createXYLineChart(
      "XYLine Chart using JFreeChart", "Age", "Weight", 
      xyDataset, PlotOrientation.VERTICAL, true, true, false); 
     ChartFrame frame1 = new ChartFrame("XYLine Chart", chart); 
     frame1.setVisible(true); 
     frame1.setSize(300, 300); 
    } 
} 
+0

Code reformaté; s'il vous plaît revenir si incorrect. – trashgod

Répondre

0

Vous utilisez une approche d'orientation qui ne fonctionne pas dans un environnement Web. Vous devez générer une image et l'aplatir, par exemple. un flux d'octets JPEG et renvoyez THIS en réponse à votre servlet avec un type MIME correct.

Je l'ai fait il y a plusieurs mois mais je n'ai plus le code.

5

Je l'ai fait il y a quelque temps, mais je aussi le code, voici donc la moindre idée ..

Comme Thorbjørn Ravn Andersen dit que vous devez avoir une servlet générant des images au lieu de pages Web. Cela signifie que la méthode processRequest ressemble à votre servlet ceci:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 

     response.setContentType("image/png"); 
     ServletOutputStream os = response.getOutputStream(); 
     ImageIO.write(getChart(request), "png", os); 
     os.close(); 
    } 

private RenderedImage getChart(HttpServletRequest request) { 
     String chart = request.getParameter("chart"); 
     // also you can process other parameters like width or height here 
     if (chart.equals("myDesiredChart1")) { 
      JFreeChart chart = [create your chart here]; 
      return chart.createBufferedImage(width, height) 
     } 

Ensuite, vous pouvez utiliser cette servlet comme source d'image dans d'autres pages par exemple comme celui-ci ..

<img src="/ChartDrawerServlet?chart=myDesiredChart1&width=..and other processed parameters" ..> 

Et vous êtes done :)

+0

Martin. Je veux utiliser votre code. Mais le contrôleur get ou post est manquant. Je n'arrive pas à comprendre comment je peux l'utiliser. Pouvez-vous poster aussi le contrôleur – newbie

+0

@newbie, Change 'processRequest' en' doGet' ou 'doPost' – developerwjk

Questions connexes