2

大家好:
我正在使用下面来显示折线图。当我运行下面的代码时,我得到了窗口,但它是空白的并且不显示图表。请帮助我,并告诉我如何使用下面的代码在 html 页面中显示折线图。

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

2 回答 2

5

我前段时间也这样做过,但我也有代码,所以这是线索..

正如 Thorbjørn Ravn Andersen 所说,您必须有一个生成图像而不是网页的 servlet。这意味着您的 servlet 的 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)
        }

然后您可以将此 servlet 用作其他页面中的图像源,例如这样..

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

你完成了:)

于 2009-03-26T07:54:44.170 回答
0

您正在使用在网络设置中不起作用的摇摆方法。您必须生成一个图像,并将其展平为例如 JPEG 字节流,然后将其作为来自您的 servlet 的响应返回,该响应具有正确的 MIME 类型。

我在很多个月前做过这个,但现在没有代码了。

于 2009-03-20T10:09:45.893 回答