2009-03-20 2 views
2

HI Все:
Я использую нижеследующее, чтобы сравнить график строки. когда я запускаю код ниже, я получаю окно, но он пуст и не отображает график. Пожалуйста, помогите мне, а также скажите мне, как diplay линейный график на странице html, используя код ниже.
Как отобразить линейный график с помощью JFreeChart в 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

Переформатированный код; пожалуйста, верните, если это неверно. – trashgod

ответ

0

Вы используете качели подход, который не работает в веб-настройки. Вы должны сгенерировать изображение и сгладить его, например. поток байта JPEG и вернуть THAT в ответ от вашего сервлета с правильным типом MIME.

Я сделал это много лун назад, но у меня больше нет кода.

5

Я сделал это некоторое время назад, как хорошо, но у меня есть код, так вот ключ ..

Как Thorbjørn Ravn Андерсен сказал, что вы должны иметь сервлет генерации изображения вместо веб-страниц. Это означает, что метод ProcessRequest вашего сервлета выглядит примерно так:

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) 
     } 

Затем вы можете использовать этот сервлет в качестве источника изображения в других страницах, например, как это ..

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

И вы сделано :)

+0

Martin. Я хочу использовать ваш код. Но контролер get или post отсутствует. Я не могу понять, как я могу его использовать. Можете ли вы разместить также контроллер – newbie

+0

@newbie, изменить 'processRequest' на' doGet' или 'doPost' – developerwjk

Смежные вопросы