http://49.images22.51img1.com/6000/a502086525/9790805a52e37ce0cd5e2ed0efeaba34.jpg[/url]http://44.images22.51img1.com/6000/a502086525/4873318f43771e96752800eeb4ac9282.gif图片都是一样的,防止无法显示图片。
求用java生成所示图片,数据都是动态的.
可以提供下载列子,可以提供代码参考.http://44.images22.51img1.com/6000/a502086525/4873318f43771e96752800eeb4ac9282.gif
[url=http://49.images22.51img1.com/6000/a502086525/9790805a52e37ce0cd5e2ed0efeaba34.jpg]

解决方案 »

  1.   

    利用JAVA绘图动态生成图片发送到客户端IE
    package com.gepower.ps.eps.topissuesadmin.common; 
    import java.awt.*; 
    import java.awt.geom.Line2D; 
    import java.awt.image.BufferedImage; 
    import java.io.IOException; 
    import javax.imageio.IIOException; 
    import javax.imageio.ImageIO; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.*; 
    import org.apache.commons.lang.NumberUtils; 
    /** 

    * <p> 
    * Title: TIMT 
    * </p> 
    * <p> 
    * Description: 2008-03 
    * </p> 
    * <p> 
    * Copyright: Copyright (c) 2006 
    * </p> 
    * <p> 
    * Company: TCS 
    * </p> 

    * @author Xujin.Jiao 
    * @version 4.0 
    */ 
    public class CinScoreImgServlet extends HttpServlet { 
    public static final long serialVersionUID = 123888839L; 
        public CinScoreImgServlet() { 
        } 
        public void init() throws ServletException { 
            super.init(); 
        } 
        public void destroy() { 
            super.destroy(); 
        } 
        protected void doGet(HttpServletRequest request, HttpServletResponse response) 
                       throws ServletException, IOException { 
            process(request, response); 
        } 
        protected void doPost(HttpServletRequest request, HttpServletResponse response) 
                       throws ServletException, IOException { 
            process(request, response); 
        } 
        protected void process(HttpServletRequest request, HttpServletResponse response) 
                       throws ServletException, IOException { 
         boolean drawTriangle = true; 
      int width = TopIssueAdminConstants.CIN_IMAGE_WIDTH; 
      int height = TopIssueAdminConstants.CIN_IMAGE_HEIGHT; 
            int halfTrag = (int)Math.round(height / Math.sqrt(3d)); 
      int axisWidth = width - halfTrag; 
      int cinScore = 0; 
      int tragXpos = axisWidth; 
      String cinScoreStr = request.getParameter("cinScore"); 
      if (null != cinScoreStr && cinScoreStr.trim().length() > 0) { 
       try { 
        if (!NumberUtils.isNumber(cinScoreStr)) { 
         drawTriangle = false; 
        } else if (Integer.parseInt(cinScoreStr) < 0) { 
         drawTriangle = false; 
        } else { 
            cinScore = Integer.parseInt(cinScoreStr); 
            tragXpos = axisWidth - (int)Math.round((cinScore * axisWidth) / TopIssueAdminConstants.MAX_CIN_SCORE); 
        } 
       } catch (Exception e) { 
        drawTriangle = false; 
        EPSLogger.debug("process() : Error in CinScoreImgServlet : "+ e.getMessage()); 
       } 
      } 
      BufferedImage bi = new BufferedImage(width, height, 
                                     BufferedImage.TYPE_INT_RGB); 
      Graphics2D g2 = (Graphics2D)bi.getGraphics(); 
      g2.setBackground(Color.WHITE); 
      g2.clearRect(0, 0, width, height); 
         g2.setColor(Color.black); 
         g2.drawLine(0, 0, 0, height); 
         g2.drawLine(axisWidth / 2, 0, axisWidth / 2, height); 
         g2.drawLine(axisWidth, 0, axisWidth, height); 
         float dashes[] = {10, 2}; 
         g2.setPaint(Color.black); 
         g2.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, 
                                BasicStroke.JOIN_MITER, 
                                      10, dashes, 0 )); 
         g2.draw(new Line2D.Double(0, height / 2, axisWidth, height / 2)); 
         if (drawTriangle) { 
       int xValues[] = {tragXpos, tragXpos + halfTrag, tragXpos - halfTrag}; 
       int yValues[] = {0, height, height}; 
       g2.setColor(Color.CYAN); 
       g2.fillPolygon(xValues, yValues, 3); 
         } 
            response.setContentType("image/jpg"); 
            try { 
          ImageIO.write(bi, "jpg", response.getOutputStream()); 
            } catch(IIOException ex) { 
             EPSLogger.debug("process() : Error in CinScoreImgServlet : "+ ex.getMessage()); 
            } 
        } 

    在web.xml中加上这个: 
    ================================================================== 
    <servlet> 
        <servlet-name>DisplayCinImage</servlet-name> 
        <servlet-class>com.gepower.ps.eps.topissuesadmin.common.CinScoreImgServlet</servlet-class> 
    </servlet> <servlet-mapping> 
        <servlet-name>DisplayCinImage</servlet-name> 
        <url-pattern>/servlet/DisplayCinImage</url-pattern> 
    </servlet-mapping> 
    JSP中这样使用: 
    =============================================================== 
    <td align="center"> 
      <img src="<%=request.getContextPath()%>/servlet/DisplayCinImage?cinScore=<%=roundOff(tMB.getCinScore())%>" alt="CIN Score=<%=roundOff(tMB.getCinScore())%>" /> 
    </td> 
      

  2.   

    对坐标轴比较感兴趣,写了一个坐标轴的,其他的部分相对简单一些,看完这个,应该就会做了import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Paint;
    import java.awt.RenderingHints;
    import java.awt.Stroke;
    import java.awt.geom.GeneralPath;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;@SuppressWarnings("serial")
    public class CoordinateSystem extends JPanel {
        private int unitSize = 20;
        private int ox = 100; // 原点的横坐标
        private int oy = 100; // 原点的纵坐标
        private int originalPaddingLeft = 110; // 原点离窗口左边的距离
        private int originalPaddingBottom = 110; // 原点离窗口底部的距离    public CoordinateSystem() {
            setBackground(Color.WHITE);
        }    @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);        ox = originalPaddingLeft;
            oy = getHeight() - originalPaddingBottom;
            g2d.translate(ox, oy);
            g2d.scale(1, -1);        // 绘制坐标系
            drawGrid(g2d);
            drawAxis(g2d);
        }    // 绘制网格线
        private void drawGrid(Graphics2D g2d) {
            Paint oldPaint = g2d.getPaint();
            Stroke oldStroke = g2d.getStroke();        g2d.setPaint(Color.decode("#CCCCCC"));
            Stroke stroke = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0,
                new float[] { 4, 2 }, 0);
            g2d.setStroke(stroke);        int ww = getWidth();
            int wh = getHeight();        // 绘制横线
            for (int y = 0; y < oy + unitSize; y += unitSize) {
                g2d.drawLine(-ox, y, ww - ox, y);
            }
            for (int y = -unitSize; y > -(wh - oy) - unitSize; y -= unitSize) {
                g2d.drawLine(-ox, y, ww - ox, y);
            }        // 绘制纵线
            for (int x = 0; x < ww - ox + unitSize; x += unitSize) {
                g2d.drawLine(x, oy, x, -(wh - oy));
            }
            for (int x = -unitSize; x > -(ww - ox) - unitSize; x -= unitSize) {
                g2d.drawLine(x, oy, x, -(wh - oy));
            }        g2d.setPaint(oldPaint);
            g2d.setStroke(oldStroke);
        }    // 绘制坐标轴
        private void drawAxis(Graphics2D g2d) {
            Paint oldPaint = g2d.getPaint();
            Stroke oldStroke = g2d.getStroke();        g2d.setStroke(new BasicStroke(1));
            int tw = 13;
            int th = 4;
            int endX = unitSize * 14;
            int endY = unitSize * 10;        // 绘制横坐标轴
            GeneralPath triangle = new GeneralPath();
            triangle.moveTo(endX, 0);
            triangle.lineTo(endX - tw, th);
            triangle.lineTo(endX - tw, -th);
            triangle.closePath();
            g2d.setPaint(Color.decode("#000000"));
            g2d.drawLine(0, 0, endX, 0);
            g2d.fill(triangle);        // 绘制纵坐标轴
            triangle.moveTo(0, endY);
            triangle.lineTo(th, endY - tw);
            triangle.lineTo(-th, endY - tw);
            triangle.closePath();
            g2d.drawLine(0, 0, 0, endY);
            g2d.fill(triangle);        g2d.setPaint(oldPaint);
            g2d.setStroke(oldStroke);
        }    private static void createGuiAndShow() {
            JFrame frame = new JFrame("");
            frame.getContentPane().add(new CoordinateSystem());        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(500, 400);
            frame.setAlwaysOnTop(true);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }    public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    createGuiAndShow();
                }
            });
        }
    }class Task {
        int startDay;
        int duration;    public Task(int startDay, int duration) {
            this.startDay = startDay;
            this.duration = duration;
        }
    }