2

HI All:
以下を使用して折れ線グラフを表示しています。以下のコードを実行すると、ウィンドウが表示されますが、空白でグラフが表示されません。以下のコードを使用して、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 が言ったように、Web ページの代わりに画像を生成するサーブレットが必要です。つまり、サーブレットの 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" ..>

そして、あなたは完了です:)

于 2009-03-26T07:54:44.170 に答える
0

Web 設定では機能しないスイング アプローチを使用しています。Image を生成し、それをたとえば JPEG バイト ストリームにフラット化し、サーブレットからの応答として正しい MIME タイプで THAT を返す必要があります。

私はこれを何ヶ月も前に行いましたが、コードはもうありません。

于 2009-03-20T10:09:45.893 に答える