1

私のコードがあります。データを分析してグラフを作成し、ローカルドライバーに保存しようとしています。プログラムは現在正常に動作しています。しかし、プログラムがすべて終了した後にのみ、jpg ファイルをローカル ドライブに保存できることがわかりました。ただし、データが多すぎて、作成する必要があるグラフが多すぎます。プログラム全体が何時間も実行される場合があります。リアルタイムで jpg を保存できるようにすることはできますか? 作成したばかりのすべてのグラフを表示できます。または、すべて終了する前にプログラムを停止する必要がある場合でも、すべてのグラフをあきらめる必要はありません。

ありがとうございました

protected void paintComponent(Graphics g) {
    System.out.println("go");
    super.paintComponent(g);
    BufferedImage jpg = new BufferedImage(1040, 400,
            BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = jpg.createGraphics();
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                        RenderingHints.VALUE_ANTIALIAS_ON);
    int w = getWidth();
    int h = getHeight();
    double total=0;
    // Draw ordinate.
    g2.draw(new Line2D.Double(SPACE, SPACE, SPACE, h-SPACE));
    // Draw abcissa.
    g2.draw(new Line2D.Double(SPACE, h/2, w-SPACE, h/2));
    double xInc = (double)(w - 2*SPACE)/(data.size()-1);
    double scale = (double)(h/2 - SPACE*3)/getMax();
    // Mark data points.
    g2.setPaint(Color.red);
    for(int i = 0; i < data.size(); i++) {
        double x = SPACE + i*xInc;
        double y;
        if(data.get(i)!=0){
            y= h/2 - SPACE - scale*data.get(i);
            total = total + data.get(i);
        }else{
            y = h/2;
        }

        g2.fill(new Ellipse2D.Double(x, y-1, 4, 4));

    }
    try {
        ImageIO.write(jpg, "JPEG", new File("111\\"+total/data.size() + ".jpg"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
4

1 に答える 1