jsp创建直方图

文件graphBG.jsp--
<%@ page language="java" contentType = "text/html;charset = gb2312" import = "java.awt.*" errorPage = ""%>
<%!
public class graphBG{
    Font font = new Font("ARIAL",Font.BOLD,11);
    Color headerColor = new Color(20,50,100);
    public Graphics2D draw(Graphics2D biContext,int width,int height,String headerText,String averageText){
        //阴影颜色
        Color dropShadow = new Color(200,200,200);
        //标题
        Dimension dim = new Dimension(width,height);
        Dimension dimGraph = new Dimension(width-21,height-51);
        Dimension dimHeader = new Dimension(width-21,20);
        //矩形区域
        Rectangle area = new Rectangle(dim);
        Rectangle graphArea = new Rectangle(dimGraph);
        Rectangle headerArea = new Rectangle(dimHeader);
        //背景白色
        biContext.setColor(Color.white);
        biContext.fill(area);
        //阴影
        graphArea.setLocation(18,42);
        biContext.setColor(dropShadow);
        biContext.fill(graphArea);
        //用白色填充矩形区域
        graphArea.setLocation(11,36);
        biContext.setColor(Color.white);
        biContext.fill(graphArea);
        //画出黑色边界
        biContext.setColor(Color.black);
        biContext.draw(graphArea);
        headerArea.setLocation(18,12);
        biContext.setColor(dropShadow);
        biContext.fill(headerArea);
        //用蓝色填充标题区
        headerArea.setLocation(11, 5);
        biContext.setColor(headerColor);
        biContext.fill(headerArea);
        //画出头部文字
        biContext.setFont(font);
        biContext.setColor(Color.white);
        biContext.drawString(averageText,150,18);
        return biContext;       
    }
}
%>

文件index.jsp--
<%@ page contentType = "text/html;charset = gb2312" language = "java"%>
<%@ page import = "java.awt.*"%>
<%@ page import = "java.io.*"%>
<%@ page import = "java.awt.image.*"%>
<%@ page import = "com.sun.image.codec.jpeg.*"%>
<%@ include file = "graphBG.jsp"%>

<%
    //声明产品名称数组
    String datanames[] = {"Apples","Oranges","Peaches","Lemons","Grapefruit"};
    //声明销售数量数组
    int datavalues[] = {11,62,33,102,50};
    int y_pos = 0;
    int headerOffset = 50;
    int innerOffset = 20;
    int barHeight = 10;
    int textHeight = 20;
    int displayHeight = barHeight + textHeight;
    Color barColor = new Color(153,19,19);
    int width = 300;
    int height = (datavalues.length * displayHeight) + headerOffset + innerOffset;
    int innerWidth = width - (innerOffset * 2);
   
    //计算平均值
    int average = 0;
    for(int i = 0;i < datavalues.length;i++){
        average += datavalues[i];
    }
    average = average / datavalues.length;
   
    //查找最大值
   
    int maximum = 0;
    for(int i = 0;i < datavalues.length;i++){
        if(datavalues[i]>maximum){
            maximum = datavalues[i];
        }
    }
   
    response.setContentType("image/jpeg");
    BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphics2D biContext = bi.createGraphics();
   
    //声明画图类的实例,画出标题区和外部边界
    graphBG gr = new graphBG();
    gr.draw(biContext,width,height,"Ferm Produce","Overall Average:" + average);
    ///
    //在图像中画出数据信息
    /
    //循环画出每个产品的直方图
    for(int i = 0;i < datavalues.length;i++){
        int currentValue = datavalues[i];
        //设置直方图中每个方块的Y坐标的位置
        y_pos = i* displayHeight + headerOffset;
        //设置直方图中每个方块的宽度
        int barWidth = (innerWidth * currentValue)/maximum;
        String display = datanames[i] + "(" + currentValue + ")";
        biContext.setColor(Color.black);
        biContext.drawString(display,20,y_pos);
        biContext.setColor(barColor);
        Dimension bar = new Dimension(barWidth,barHeight);
        Dimension barBorder = new Dimension(barWidth - 3,barHeight - 3);
        Rectangle barRect = new Rectangle(bar);
        Rectangle barRectBorder = new Rectangle(barBorder);
        //画出每个直方图中方块的边界
        barRect.setLocation(21,5+y_pos);
        barRectBorder.setLocation(22,6+y_pos);
        biContext.setColor(barColor);
        biContext.fill(barRect);
        biContext.setColor(Color.white);
        biContext.draw(barRectBorder);
    }
    //对图像编码显示
    OutputStream output = response.getOutputStream();
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
    encoder.encode(bi);
    output.close();
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值