- 浏览: 122905 次
- 性别:
- 来自: 快来看~天上米有灰机
文章分类
最新评论
-
suzg110:
关闭中间件的时候该怎么关闭的?直接关了下次启动就出现异常Vir ...
sequoia 的详细安装步骤 -
晒太阳的冰:
zhuyx808 写道晒太阳的冰 写道我比较想知道这个同步能维 ...
GAE read rss send to 腾讯微博 -
zhuyx808:
晒太阳的冰 写道我比较想知道这个同步能维持多久。看起来你那个. ...
GAE read rss send to 腾讯微博 -
晒太阳的冰:
我比较想知道这个同步能维持多久。看起来你那个.TK的网站很快就 ...
GAE read rss send to 腾讯微博 -
zhuyx808:
yangting_lisa 写道这个程序我测试出来有问题,希望 ...
OpenFire客户端编程示例
很凌乱,简单记录,有空整理下
import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.Graphics; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.util.Hashtable; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class Test{ // 保存为文件名:设置 private String fileName = buildFileName("c:\"); private String PillarNum="1"; private int pillarnum=0; private String pillarflag="1";//柱形图(1)或者线图 // 主要标题 private String topTitle = "主要标题"; // No set get Method. private Color topTitleColor = Color.gray; private Font topTitleFont = new Font("宋体", Font.BOLD, 20); //标题位置 private int topTitleStart = 25; // 左边标题 private String leftTitle = "左边标题"; private Color leftTitleColor = Color.red; private Font leftTitleFont = new Font("宋体", Font.PLAIN, 14); //标题位置 private int leftTitleStart = 25; //数字长度 private int leftlength=2; // 底部标题 private String bottomTitle = "底部标题"; private Color bottomTitleColor = Color.red; private Font bottomTitleFont = new Font("宋体", Font.PLAIN, 14); //标题位置 private int bottomTitleStart = 10; //标题长度 private int bottomlength=2; // 右边标题 private String[] PillarInfo={"","","","","","","","","","","","","","","","","","","","","","","","","","",}; private Color rightTitleColor = Color.black; private Font rightTitleFont = new Font("宋体", Font.PLAIN, 14); //标题位置 private int rightTitleStart = 10; //标题长度 private int rightlength=2; // 设置标识字体大小:设置 private Font drawLineFont = new Font("宋体", Font.PLAIN, 2); // 虚线字体 private Font rectHeadFont = new Font("宋体", Font.PLAIN, 12);// 柱头字体 private Font rowScaleFont = new Font("宋体", Font.PLAIN, 12);// 横坐标的字体 private Font colScaleFont = new Font("宋体", Font.PLAIN, 12);// 纵坐标字体 // 上面字体相对应的颜色:设置 private Color drawLineFontColor = Color.lightGray; private Color rowScaleFontColor = Color.black; private Color colScaleFontColor = Color.darkGray; //private Color rectHeadFontColor = Color.black; private Color[] rectHeadFontColor ={Color.black,Color.decode("#FF0000"),Color.decode("#0000FF"),Color.decode("#77CC50"),Color.decode("#FF6600"),Color.decode("#00FF00"),Color.decode("#cc99FF"),Color.decode("#000080")}; // 设置柱状图柱宽=颜色:#99CC00:设置 //private Color fillRectColor = Color.decode("#99CC00");// new //设置柱状图柱宽=颜色:#99CC00:设置 //#99cc00,#FF0000,#0000FF,#77CC50,#FF6600,#00FF00,#cc99FF,#000080 private Color[] fillRectColor ={Color.decode("#99cc00"),Color.decode("#FF0000"),Color.decode("#0000FF"),Color.decode("#77CC50"),Color.decode("#FF6600"),Color.decode("#00FF00"),Color.decode("#cc99FF"),Color.decode("#000080")}; // Color(153,204,0);//Color.decode("#00C600"); // //Color.decode("#0099FF"); private Color frameRectColor = Color.GRAY; // 内框颜色 // 画布背景头颜色=默认白色:设置(大框的背景颜色) private Color canvasBackgroundColor = Color.decode("#efefef"); // Color.white;// // 设置画图区域边界:刻度:设置 private int topVerge = 20;// 上框距离 private int addtoptitleVerge=0;//如果有上标题,加上上标题的高度 private int bottomVerge = 0; // 下框距离 private int addbottomtitleVerge=0;//如果有下标题,加上下标题的高度 private int leftVerge = 0;//左边宽度 private int addlefttitleVerge=0;//如果有左标题,加上左标题的宽度 private int addrighttitleVerge=0;//如果有右标题,加上右标题的宽度 private int rightVerge = 20;//右边固定20 private int leftmargin=10;//左边空白 private int bottommargin=10;//下边空白 // 数据变量:计算 private Hashtable hb = null; // 画图数据 private String dataList = null; // 参数是否有效,决定是否要画出图形:计算 private boolean bPaint = true; private String gradual="0"; // 画布大小=默认:宽:800;高:300:设置(大框的长度和高度) private int canvasWidth = 800; private int canvasHeight = 300; // 画布刻度=默认:行:11;列:31:设置或计算(刻度数量) private int rowCount = 10; private int colCount = 200; // 柱体伸出部分,柱脚部分高 private int rectFootLenght = 0; // 柱状标头字串上移偏转量:px:设置 private int rectHeadFontOffset = 2; // 画线的间隔:px[如果太小,则图体积大]:设置 private int drawLineInterval = 4; // 放大比率:放大100倍[暂没有用]:设置用 private int zoomInRate = 100; // 柱状图柱宽=单位:px:设置或计算 private int rectWidth = 16; // 画区域长宽:计算 private int paintWidth = 0; private int paintHeight = 0; // 画线间隔:列间隔;行间隔:计算,初始化在构造函数中colinterval和柱子数量有关系 private int colInterval = 20*pillarnum; private int rowInterval = 20; public void paint(BufferedImage bi) { if (bi == null){ bPaint = false; } if (bPaint) { // 内存建图区域:生成画布 // BufferedImage bi = new BufferedImage(canvasWidth, canvasHeight, // BufferedImage.TYPE_INT_BGR); Graphics g = bi.createGraphics(); // 设置画布底色 g.setColor(canvasBackgroundColor); g.fillRect(0, 0, canvasWidth, canvasHeight); //打印top printTop(g); //打印left printLeft(g); //打印主题数据 printMain(g); //打印bottom printBottom(g); //打印right if(pillarnum>1){ printRight(g); } // 清除画布 g.dispose(); } else {//错误提示的时候执行 if (bi == null){ bi = new BufferedImage(canvasWidth, canvasHeight,BufferedImage.TYPE_INT_BGR); } Graphics g = bi.createGraphics(); // 设置画布底色 g.setColor(canvasBackgroundColor); g.fillRect(0,0,canvasWidth,canvasHeight); g.setColor(Color.RED); g.setFont(new Font("宋体", Font.BOLD, 20)); g.drawString("没有数据,图形不输出!",canvasWidth/2-11*10,canvasHeight/2+13-10); // 清除画布 g.dispose(); } } public void printTop(Graphics g) { // 打印头标题 int mainTitleLeftStart = canvasWidth / 2 - topTitle.length()* topTitleFont.getSize()* 10 / 23; g.setColor(topTitleColor); g.setFont(topTitleFont); g.drawString(topTitle, mainTitleLeftStart, topTitleStart); } public void printLeft(Graphics g) { //左标题居中显示,如果字数过多就会显示不全那么就从最顶部开始打印,最顶部是13 if(canvasHeight<=(leftTitle.length()*20+13)){ leftTitleStart=13; }else{ leftTitleStart =canvasHeight/2 - leftTitle.length()*10+13; } // 打左标题 g.setColor(leftTitleColor); g.setFont(leftTitleFont); drawString(g,leftTitle,(leftmargin+addlefttitleVerge)/2-10,leftTitleStart,20); } public void printRight(Graphics g) { rightTitleStart=canvasWidth-rightVerge-addrighttitleVerge+5; for(int i=0;i<pillarnum;i++){ if(pillarflag.equalsIgnoreCase("1")){ //打右矩形gradual为1就渐变 if(gradual.equalsIgnoreCase("1")){ paintRect(g,rightTitleStart,canvasHeight/2+ (i-pillarnum)*17+13, rectWidth - 2,rectWidth - 2,fillRectColor[i]); }else{ g.setColor(fillRectColor[i]); g.fillRect(rightTitleStart,canvasHeight/2+ (i-pillarnum)*17+13, rectWidth - 2,rectWidth - 2); } }else{ g.setColor(fillRectColor[i]); g.drawOval(rightTitleStart-2,canvasHeight/2+ (i-pillarnum)*17+11, 5, 5); g.fillOval(rightTitleStart-2,canvasHeight/2+ (i-pillarnum)*17+11, 5, 5); } // 打右标题 g.setColor(rightTitleColor); g.setFont(rightTitleFont); g.drawString(PillarInfo[i],rightTitleStart+rectWidth,canvasHeight/2+ (i-pillarnum)*17+11+rectWidth); } } public void printMain(Graphics g) { double val_max = toDbl(hb.get("val_max")); int rowScaleMax = round(val_max, 1); int rowScale = rowScaleMax / rowCount; boolean bCalc = (rowScale * rowCount == rowScaleMax); // 输出竖标 String[] col_arr = (String[]) hb.get("col_arr"); double[][] val_arr = (double[][]) hb.get("val_arr"); // 画列标度:主要是整数 g.setFont(rowScaleFont); g.setColor(rowScaleFontColor); for (int i = 1; i < rowCount + 1; i++) { g.drawString(fmtNum("" + rowScale * i, leftlength, ' '), leftmargin+addlefttitleVerge,(topVerge+addtoptitleVerge + paintHeight - i * rowInterval )); } // 先画外框架 g.setColor(frameRectColor); g.drawRect(leftmargin+leftVerge+addlefttitleVerge, topVerge+addtoptitleVerge, paintWidth, paintHeight); // 后画内框 g.setColor(Color.white); g.fillRect(leftmargin+leftVerge+addlefttitleVerge + 1, topVerge+addtoptitleVerge + 1, paintWidth - 1, paintHeight - 1); // 画虚横线 int offset = drawLineFont.getSize() / 2; g.setFont(drawLineFont); g.setColor(drawLineFontColor); for (int i = 1; i < rowCount + 1; i++) { for (int j = leftVerge+addlefttitleVerge + offset; j < (leftmargin+leftVerge+addlefttitleVerge + paintWidth); j += drawLineInterval) { g.drawString(".", j,(topVerge+addtoptitleVerge + paintHeight - i * rowInterval + 2)); } } // 画行标度:行标识 offset = colScaleFont.getSize() / 2; g.setFont(colScaleFont); g.setColor(colScaleFontColor); // 打印横坐标 for (int i = 1; i < colCount + 1; i++) { drawString(g, col_arr[i - 1],leftmargin+ leftVerge+addlefttitleVerge + 20+(i-1) * colInterval+pillarnum*rectWidth / 2-rectWidth, canvasHeight - bottomVerge-addbottomtitleVerge-bottommargin+15, 12); } int rectHeight = (int) Math.round(Math.random() * 10); if(pillarflag.equals("1")){ for (int i = 1; i < colCount + 1; i++) { for(int firsti=0;firsti<pillarnum;firsti++){ if (bCalc){ rectHeight = round((val_arr[i - 1][firsti] / val_max)* (paintHeight - topVerge), 0); }else{ rectHeight = round((val_arr[i - 1][firsti] / val_max)* (paintHeight), 0); } //gradual为1就渐变 if(gradual.equalsIgnoreCase("1")){ paintRect(g, leftmargin+leftVerge+addlefttitleVerge+ 20+(i-1) * colInterval+firsti*rectWidth - rectWidth / 2, (topVerge+addtoptitleVerge+ paintHeight - rectHeight), rectWidth, rectHeight+ rectFootLenght,fillRectColor[firsti]); }else{ g.setColor(fillRectColor[firsti]); g.fillRect(leftmargin+leftVerge+addlefttitleVerge+ 20+(i-1) * colInterval+firsti*rectWidth - rectWidth / 2, (topVerge+addtoptitleVerge+ paintHeight - rectHeight), rectWidth, rectHeight+ rectFootLenght); } } } }else{ for(int firsti=0;firsti<pillarnum;firsti++){ int[] x=new int[colCount]; int[] y=new int[colCount]; for(int i=1;i<colCount+1;i++){ if (bCalc){ rectHeight = round((val_arr[i - 1][firsti] / val_max)* (paintHeight - topVerge), 0); }else{ rectHeight = round((val_arr[i - 1][firsti] / val_max)* (paintHeight), 0); } x[i-1]=leftmargin+leftVerge+addlefttitleVerge+ 20+(i-1) * colInterval+firsti*rectWidth+5- rectWidth / 2; y[i-1]=(topVerge+addtoptitleVerge+ paintHeight - rectHeight); g.setColor(fillRectColor[firsti]); g.drawOval(x[i-1]-3, y[i-1]-3, 6, 6); g.fillOval(x[i-1]-3, y[i-1]-3, 6, 6); } g.setColor(fillRectColor[firsti]); g.drawPolyline(x, y, colCount); } } for (int i = 1; i < colCount + 1; i++) { double d=0; for(int firsti=0;firsti<pillarnum;firsti++){ if(val_arr[i-1][firsti]!=d){ // 加柱头数据 g.setFont(rectHeadFont); g.setColor(rectHeadFontColor[firsti]); offset = String.valueOf(val_arr[i - 1][firsti]).length() / 2; if (offset > 2){ offset += 2; } offset += rectWidth / 2; rectHeight = round((val_arr[i - 1][firsti] / val_max)* (paintHeight - topVerge), 0); g.drawString(fmtOutStr(val_arr[i - 1][firsti]), leftmargin+leftVerge+addlefttitleVerge+20+ (i-1) * colInterval+firsti*rectWidth- offset,(topVerge+addtoptitleVerge + paintHeight - rectHeight - rectHeadFontOffset)); d=val_arr[i-1][firsti]; } } } } //打印渐变矩形 public void paintRect(Graphics g,float x, float y, int width, int height,Color color) { /* int r=color.getRed(); int gr=color.getGreen(); int b=color.getBlue(); int minusoffset=30; int addoffset=10; Color color1=new Color(RGBscope(r-minusoffset),RGBscope(gr-minusoffset),RGBscope(b-minusoffset)); Color color2=new Color(RGBscope(r+addoffset),RGBscope(gr+addoffset),RGBscope(b+addoffset)); */ Graphics2D g2D = (Graphics2D) g; Point2D.Float p1 = new Point2D.Float(x, y); Point2D.Float p2 = new Point2D.Float(x,y+height); GradientPaint g1 = new GradientPaint(p1, color, p2, Color.decode("#FFFFFF"),false); Rectangle2D.Float rect1 = new Rectangle2D.Float(x,y,width,height); g2D.setPaint(g1); g2D.fill(rect1); } public int RGBscope(int value){ if(value<0){ value=0; }else if(value>255){ value=255; }else{ } return value; } public void printBottom(Graphics g) { // 打印底标题 int bottomTitleLeftStart = canvasWidth / 2 - bottomTitle.length()* bottomTitleFont.getSize() / 2; g.setColor(bottomTitleColor); g.setFont(bottomTitleFont); g.drawString(bottomTitle, bottomTitleLeftStart + 10, canvasHeight-(addbottomtitleVerge+bottommargin)/2+5); /* // 打印底标题的图形 int bottomTitleLeftStart = canvasWidth / 2 - bottomTitle.length() * bottomTitleFont.getSize() / 2; g.setColor(fillRectColor); // g.fillRect(bottomTitleLeftStart-6, canvasHeight - // bottomTitleStart - rectWidth+4, // rectWidth+bottomTitleFont.getSize()*bottomTitle.length(), // rectWidth); g.fillRect(bottomTitleLeftStart - 6, canvasHeight - bottomTitleStart - rectWidth + 4, rectWidth - 2, rectWidth - 2); */ } // 重新计算定位数据 public void calculateScaleParameters() { // 解析数据 // System.out.println("fdsafd"+dataList); hb = parseData(); int data_len = toInt(hb.get("data_len")); leftlength=hb.get("val_max").toString().trim().length()-2; // 设置行列默认大小 if (colCount < 2){ colCount = 10; } if (rowCount < 2){ rowCount = 31; } if (data_len < colCount){ colCount = data_len; } //根据传进来字数的长度来动态调整bottomVerge String[] s=(String[]) hb.get("col_arr"); int templength=0; for(int i=0;i<s.length;i++){ if(templength<s[i].length()){ templength=s[i].length(); } } setBottomlength(templength); //每个汉字高度13 bottomVerge=bottomlength*13; if(getBottomTitle().equals("")){ addbottomtitleVerge=0; }else{ //底部标题高度20 addbottomtitleVerge=20; } //每个数字宽度为6 leftVerge=leftlength*6; if(!getLeftTitle().equals("")){ //左边字体宽度20+字体偏移量<=addlefttitleVerge addlefttitleVerge=24; } if(!getTopTitle().equals("")){ //如果有上标题生加20的高度 addtoptitleVerge=20; } if(pillarnum>1){ rightVerge=10; addrighttitleVerge=rightlength*20; } canvasWidth = colCount * colInterval + leftmargin+leftVerge +addlefttitleVerge+ addrighttitleVerge+rightVerge+20; canvasHeight = rowCount * rowInterval + bottommargin+topVerge+addtoptitleVerge + bottomVerge+addbottomtitleVerge+20; paintWidth = canvasWidth - leftVerge-leftmargin -addlefttitleVerge- rightVerge-addrighttitleVerge; paintHeight = canvasHeight - topVerge-addtoptitleVerge-addbottomtitleVerge-bottommargin - bottomVerge; // System.err.print(paintWidth+" "+paintHeight); // 定义传入参数有误的可能 if (paintHeight < 20 || paintWidth < 20) bPaint = false; // 放大比率控制:暂时没有用 if (zoomInRate < 100) zoomInRate = 100; // colInterval = (paintWidth - rightMargin) / colCount; // rowInterval = (paintHeight - topMargin) / rowCount; // 如果柱宽大于等于行间隔,自动调整到其80% if (rectWidth >= colInterval) rectWidth = colInterval * 4 / 5; // 柱宽最少2px if (rectWidth < 2) rectWidth = 2; //参数输入错误的时候固定大小 if(!bPaint){ canvasWidth=300; canvasHeight=100; } } public Hashtable parseData() { // String data = // "'第部分',121330.22,'2',92333.84,'3',31110.4677,'4',72950,'5',19620,'6',11000,'7',38300,'8',57870,'9',34720,'10',0,'11',66810,'12',76030,'13',67190,'14',66950,'15',34370,'16',25400,'17',0,'18',44780,'19',108820,'20',53830,'21',57730,'22',134190,'23',6000,'24',0,'25',55600,'26',67620,'27',11030,'28',81370,'29',16850,'30',159650,'31',7000,'32',2000,'33',6000,'34',12300"; String data = "1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0"; if (dataList != null && !dataList.trim().equals("")){ data = dataList; }else{ bPaint=false; } return parseData(data); } public Hashtable parseData(String data) { if (data == null || data.length() < 2){ return null; } String[] arr_col = null; double[][] arr_dbl = null; String[] arr = replace(data, "'", "").split(","); int len = 0; if (arr != null){ len = arr.length; }else{ return null; } double max = 0.0d; Hashtable hb = new Hashtable(200); arr_col = new String[len / (pillarnum+1)]; arr_dbl = new double[len / (pillarnum+1)][pillarnum]; hb.put("data_len", String.valueOf(len / (pillarnum+1))); for (int i = 0; i < len; i++) { if (arr[i] == null || arr[i].trim().equals("")){ arr[i] = "0"; } if ((i % (pillarnum+1)) != 0 ){ if(max < Double.valueOf(arr[i]).doubleValue()){ max = Double.valueOf(arr[i]).doubleValue(); } } if ((i % (pillarnum+1)) == 0){ arr_col[i / (pillarnum+1)]=arr[i]; }else{ if((i % (pillarnum+1)) == 1){ for(int ii=0;ii<pillarnum;ii++){ arr_dbl[i / (pillarnum+1)][ii] = Double.valueOf(arr[i+ii]).doubleValue(); } } } } if (max < 10) { max = 10; } hb.put("col_arr", arr_col); hb.put("val_arr", arr_dbl); hb.put("val_max", String.valueOf(max)); return hb; } public void drawString(Graphics g, String msg, int x, int y, int offset) { if (g == null) return; if (x < 0 || y < 0) return; if (msg == null || msg.trim().equals("")) return; int len = msg.length(); if (toInt(msg) > 0) { g.drawString(msg, x, y); return; } for (int i = 0; i < len; i++) { g.drawString(msg.substring(i, i + 1), x, y + i * offset); } } public String getFileName(String file) { String szRtn = "."; if (file == null || file.trim().equals("")) return File.separator + System.currentTimeMillis() + ".jpg"; szRtn = file.trim(); File f = new File(szRtn); String path = f.getParent(); String name = f.getName(); int iPos = name.lastIndexOf("."); if (iPos < 0) name += ".jpg"; else name = name.substring(0, iPos) + ".jpg"; f = new File(path); if (!f.exists() || !f.isDirectory()) System.err.println("create dir ok! " + f.mkdirs()); szRtn = path + File.separator + name; return szRtn; } public void paintToPic(String file) // 生成文件 { fileName = getFileName(file); System.err.println(fileName); // 计算刻度数据 calculateScaleParameters(); // 定义一个画图空间 BufferedImage bi = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_BGR); // 输出内容到画图空间 paint(bi); try { FileOutputStream out = new FileOutputStream(fileName); JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(out); en.encode(bi); if (out != null) { out.close(); out = null; } } catch (Exception e) { System.err.println("Create pic err:" + e); } } public void paintToStream(HttpServletResponse response) // 放入内存 { // 计算刻度数据 calculateScaleParameters(); // 定义一个画图空间 BufferedImage bi = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_BGR); // 输出内容到画图空间 paint(bi); /* * response.setContentType("image/jpeg"); * response.addHeader("pragma","NO-cache"); * response.addHeader("Cache-Control","no-cache"); * response.addDateHeader("Expries",0); */ ServletOutputStream out = null; try { out = response.getOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(bi); if (false && out != null) { out.close(); out = null; } } catch (Exception e) { System.err.println("Create pic err:" + e); } } /** * 控制左对齐和右对齐的核心方法,其中w是控制的参数 * */ public String fmtNum(String src, int w, char ch) { StringBuffer sb = new StringBuffer(); if (src == null || w < 0) return src; if (w <= src.length()) return src; int len = w - src.length(); for (int i = 0; i < len; i++) sb.append(ch); sb.append(src); return sb.toString(); } public String fmtOutStr(double num) { return fmtNumStr(roundDbl(num, -2)); } public String fmtNumStr(String str) { if (str == null || str.trim().equals("")) return str; int iPos = str.lastIndexOf("."); if (iPos < 0) return str; String head = str.substring(0, iPos); String tail = str.substring(iPos + 1); iPos = tail.length(); while (head.startsWith("0")) head = head.substring(1); while (tail.endsWith("0")) tail = tail.substring(0, tail.length() - 1); if (tail.length() == iPos) return str; else if (tail.length() > 0) return head + "." + tail; else return head; } public int round(double num, int w) { if (num < 0.000001d || w < 1) return (int) Math.round(num); String szDbl = String.valueOf(num); int iPos = szDbl.indexOf("."); String szRate = "1"; for (int i = 0; i < w; i++) szRate += "0"; int tmp = (int) Math.round(num); int rate = Integer.valueOf(szRate).intValue(); if (iPos > 0) { if (iPos <= w) return tmp; szDbl = szDbl.substring(iPos + 1); if (0 < Integer.valueOf(szDbl).intValue()) return (int) (tmp / rate * rate + rate); } if (0 < (tmp % rate)) return (int) (tmp / rate * rate + rate); return tmp; } public String buildFileName(String path) { String dir = "."; if (path != null || !path.trim().equals("")) dir = path.trim(); File f = new File(dir); if (f.isFile() || !f.exists()) System.err.println("create dir:" + f.mkdirs()); dir = f.getAbsolutePath() + File.separator + System.currentTimeMillis() + ".jpg"; return dir; } public double toDbl(Object obj) { if (obj == null || obj.toString().trim().equals("")) return 0.0d; try { return Double.parseDouble(obj.toString().trim()); } catch (Exception ex) { return 0; } } public int toInt(Object obj) { if (obj == null || obj.toString().trim().equals("")) return 0; try { return Integer.parseInt(obj.toString().trim()); } catch (Exception ex) { return 0; } } public String roundDbl(double num, int w) { if(Double.valueOf(num).toString().contains("E")){ return Double.valueOf(num).intValue()+""; } int width = 0; if (w > 0) return String.valueOf(round(num, w)); width = Math.abs(w); String szDbl = String.valueOf(num); int iPos = szDbl.indexOf("."); if (width >= iPos) width = 2; if (iPos < 0) { szDbl += "."; for (int i = 0; i < width; i++) szDbl += "0"; return szDbl; } else { int len = szDbl.length(); if (width < (len - iPos - 1)) { iPos = iPos + 1 + width; // 整数位+小数点+小数位 double d1 = Double.valueOf(szDbl.substring(0, iPos)) .doubleValue(); int k = Integer.valueOf(szDbl.substring(iPos, iPos + 1)) .intValue(); if (k < 5) return String.valueOf(d1); else { String szTmp = "1"; for (int i = 0; i < width; i++) szTmp += "0"; // System.err.println("width="+width+" szTmp="+szTmp); int tmp = Integer.valueOf(szTmp).intValue(); d1 = (d1 * tmp + 1) / tmp; szDbl = String.valueOf(d1); } } iPos = szDbl.indexOf("."); len = szDbl.length(); if (width >= (len - iPos - 1)) { width = width - (len - iPos - 1); for (int i = 0; i < width; i++) szDbl += "0"; } return szDbl; } } public String replace(String szSrc, String szOld, String szNew) { try { if (szSrc == null || szSrc.trim().equals("")) return ""; String szTmp = szSrc.trim(); int iOldLen = szOld.length(); int iSrcLen = szSrc.length(); int iStart = 0; int iPos = -1; StringBuffer sb = new StringBuffer(iSrcLen + iOldLen * 6); if (szNew == null) { return szTmp; } if (szOld == null || szOld.equals("")) { return szTmp; } if ((iPos = szTmp.indexOf(szOld)) == -1) // 提前退出 { return szTmp; } while ((iPos = szTmp.indexOf(szOld, iStart)) > -1) { sb.append(szTmp.substring(iStart, iPos)); sb.append(szNew); iStart = iPos + iOldLen; } if (iStart < iSrcLen) { sb.append(szTmp.substring(iStart)); } return sb.toString(); } catch (Exception ex) { return ""; } } /** * 转码(指定字符集) * * @param str * String * @return String */ public String toGBKStr(String str) { try { String strTmp = ""; if ((str == null) || str.trim().equals("")) { return ""; } else { strTmp = str.trim(); } byte[] bytes = strTmp.getBytes("GBK");// ISO8859_1 return (new String(bytes, "GBK")); } catch (Exception e) { return ""; } } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getTopTitle() { return topTitle; } public void setTopTitle(String topTitle) { this.topTitle = topTitle; } public Color getTopTitleColor() { return topTitleColor; } public void setTopTitleColor(Color topTitleColor) { this.topTitleColor = topTitleColor; } public Font getTopTitleFont() { return topTitleFont; } public void setTopTitleFont(Font topTitleFont) { this.topTitleFont = topTitleFont; } public int getTopTitleStart() { return topTitleStart; } public void setTopTitleStart(int topTitleStart) { this.topTitleStart = topTitleStart; } public String getLeftTitle() { return leftTitle; } public void setLeftTitle(String leftTitle) { this.leftTitle = leftTitle; } public Color getLeftTitleColor() { return leftTitleColor; } public void setLeftTitleColor(Color leftTitleColor) { this.leftTitleColor = leftTitleColor; } public Font getLeftTitleFont() { return leftTitleFont; } public void setLeftTitleFont(Font leftTitleFont) { this.leftTitleFont = leftTitleFont; } public int getLeftTitleStart() { return leftTitleStart; } public void setLeftTitleStart(int leftTitleStart) { this.leftTitleStart = leftTitleStart; } public String getBottomTitle() { return bottomTitle; } public void setBottomTitle(String bottomTitle) { this.bottomTitle = bottomTitle; } public Color getBottomTitleColor() { return bottomTitleColor; } public void setBottomTitleColor(Color bottomTitleColor) { this.bottomTitleColor = bottomTitleColor; } public Font getBottomTitleFont() { return bottomTitleFont; } public void setBottomTitleFont(Font bottomTitleFont) { this.bottomTitleFont = bottomTitleFont; } public int getBottomTitleStart() { return bottomTitleStart; } public void setBottomTitleStart(int bottomTitleStart) { this.bottomTitleStart = bottomTitleStart; } public int getBottomlength() { return bottomlength; } public void setBottomlength(int bottomlength) { this.bottomlength = bottomlength; } public Font getDrawLineFont() { return drawLineFont; } public void setDrawLineFont(Font drawLineFont) { this.drawLineFont = drawLineFont; } public Font getRectHeadFont() { return rectHeadFont; } public void setRectHeadFont(Font rectHeadFont) { this.rectHeadFont = rectHeadFont; } public Font getRowScaleFont() { return rowScaleFont; } public void setRowScaleFont(Font rowScaleFont) { this.rowScaleFont = rowScaleFont; } public Font getColScaleFont() { return colScaleFont; } public void setColScaleFont(Font colScaleFont) { this.colScaleFont = colScaleFont; } public Color getDrawLineFontColor() { return drawLineFontColor; } public void setDrawLineFontColor(Color drawLineFontColor) { this.drawLineFontColor = drawLineFontColor; } public Color[] getRectHeadFontColor() { return rectHeadFontColor; } public void setRectHeadFontColor(String rectHeadFontColor) { if(!rectHeadFontColor.equals("")){ String[] s=rectHeadFontColor.split(","); for(int i=0;i<s.length;i++){ if(s[i].indexOf("#")==-1){ s[i]="#"+s[i]; } this.rectHeadFontColor[i] =Color.decode(s[i]); } } } public Color getRowScaleFontColor() { return rowScaleFontColor; } public void setRowScaleFontColor(Color rowScaleFontColor) { this.rowScaleFontColor = rowScaleFontColor; } public Color getColScaleFontColor() { return colScaleFontColor; } public void setColScaleFontColor(Color colScaleFontColor) { this.colScaleFontColor = colScaleFontColor; } public Color[] getFillRectColor() { return fillRectColor; } public void setFillRectColor(String fillRectColor) { if(!fillRectColor.equals("")){ String[] s=fillRectColor.split(","); for(int i=0;i<s.length;i++){ if(s[i].indexOf("#")==-1){ s[i]="#"+s[i]; } this.fillRectColor[i] =Color.decode(s[i]); } } } public Color getFrameRectColor() { return frameRectColor; } public void setFrameRectColor(Color frameRectColor) { this.frameRectColor = frameRectColor; } public Color getCanvasBackgroundColor() { return canvasBackgroundColor; } public void setCanvasBackgroundColor(Color canvasBackgroundColor) { this.canvasBackgroundColor = canvasBackgroundColor; } public Hashtable getHb() { return hb; } public void setHb(Hashtable hb) { this.hb = hb; } public String getDataList() { return dataList; } public void setDataList(String dataList) { this.dataList = dataList; } public boolean isBPaint() { return bPaint; } public void setBPaint(boolean paint) { bPaint = paint; } public int getCanvasWidth() { return canvasWidth; } public void setCanvasWidth(int canvasWidth) { this.canvasWidth = canvasWidth; } public int getCanvasHeight() { return canvasHeight; } public void setCanvasHeight(int canvasHeight) { this.canvasHeight = canvasHeight; } public int getRowCount() { return rowCount; } public void setRowCount(int rowCount) { this.rowCount = rowCount; } public int getColCount() { return colCount; } public void setColCount(int colCount) { this.colCount = colCount; } public int getTopVerge() { return topVerge; } public void setTopVerge(int topVerge) { this.topVerge = topVerge; } public int getBottomVerge() { return bottomVerge; } public void setBottomVerge(int bottomVerge) { this.bottomVerge = bottomVerge; } public int getLeftVerge() { return leftVerge; } public void setLeftVerge(int leftVerge) { this.leftVerge = leftVerge; } public int getRightVerge() { return rightVerge; } public void setRightVerge(int rightVerge) { this.rightVerge = rightVerge; } public int getRectFootLenght() { return rectFootLenght; } public void setRectFootLenght(int rectFootLenght) { this.rectFootLenght = rectFootLenght; } public int getRectHeadFontOffset() { return rectHeadFontOffset; } public void setRectHeadFontOffset(int rectHeadFontOffset) { this.rectHeadFontOffset = rectHeadFontOffset; } public int getDrawLineInterval() { return drawLineInterval; } public void setDrawLineInterval(int drawLineInterval) { this.drawLineInterval = drawLineInterval; } public int getZoomInRate() { return zoomInRate; } public void setZoomInRate(int zoomInRate) { this.zoomInRate = zoomInRate; } public int getRectWidth() { return rectWidth; } public void setRectWidth(int rectWidth) { this.rectWidth = rectWidth; } public int getPaintWidth() { return paintWidth; } public void setPaintWidth(int paintWidth) { this.paintWidth = paintWidth; } public int getPaintHeight() { return paintHeight; } public void setPaintHeight(int paintHeight) { this.paintHeight = paintHeight; } public int getColInterval() { return colInterval; } public void setColInterval(int colInterval) { this.colInterval = colInterval; } public int getRowInterval() { return rowInterval; } public void setRowInterval(int rowInterval) { this.rowInterval = rowInterval; } public String[] getPillarInfo() { return PillarInfo; } public void setPillarInfo(String pillarInfo) { if(!pillarInfo.equals("")){ String[] s=pillarInfo.split(","); for(int i=0;i<s.length;i++){ PillarInfo[i] = s[i]; if(this.rightlength<s[i].length()){ this.rightlength=s[i].length(); } } } } public String getPillarNum() { return PillarNum; } public void setPillarNum(String pillarNum) { PillarNum = pillarNum; } public int getPillarnum() { return pillarnum; } public void setPillarnum(int pillarnum) { this.pillarnum = pillarnum; } public int getLeftlength() { return leftlength; } public void setLeftlength(int leftlength) { this.leftlength = leftlength; } public int getAddtoptitleVerge() { return addtoptitleVerge; } public void setAddtoptitleVerge(int addtoptitleVerge) { this.addtoptitleVerge = addtoptitleVerge; } public int getAddbottomtitleVerge() { return addbottomtitleVerge; } public void setAddbottomtitleVerge(int addbottomtitleVerge) { this.addbottomtitleVerge = addbottomtitleVerge; } public int getAddlefttitleVerge() { return addlefttitleVerge; } public void setAddlefttitleVerge(int addlefttitleVerge) { this.addlefttitleVerge = addlefttitleVerge; } public int getLeftmargin() { return leftmargin; } public void setLeftmargin(int leftmargin) { this.leftmargin = leftmargin; } public int getBottommargin() { return bottommargin; } public void setBottommargin(int bottommargin) { this.bottommargin = bottommargin; } public void setRectHeadFontColor(Color[] rectHeadFontColor) { this.rectHeadFontColor = rectHeadFontColor; } public void setFillRectColor(Color[] fillRectColor) { this.fillRectColor = fillRectColor; } public String getGradual() { return gradual; } public void setGradual(String gradual) { this.gradual = gradual; } public String getPillarflag() { return pillarflag; } public void setPillarflag(String pillarflag) { this.pillarflag = pillarflag; } public Test() { super(); } public Test(String PillarNum) { super(); if(PillarNum.equals("")){ PillarNum="1"; } this.PillarNum=PillarNum;//得出柱子数量 this.pillarnum=Integer.valueOf(PillarNum); this.colInterval=pillarnum*20;//根据柱子数量得间隔 } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(Color.blue); Color c=new Color(-16776961); System.out.println(c); } }
<%@ page language="java"%> <%@ page contentType="text/html;charset=gbk"%> <%@page import="Test"%> <%@page import="java.awt.Color" %> <title>Test Create Pic</title> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body> <% String strChartData=request.getParameter("chartData"); String Pillarflag="1";//是否是柱形图1是 //String strCoordColor="#99cc00,#0000FF,#FF0000,#FF99cc,#800000,#cc99FF,#000080,#808000";//柱体颜色 String strCoordColor="";//柱体颜色 //String RectHeadFontColor="#99cc00,#0000FF,#FF0000,#FF99cc,#800000,#cc99FF,#000080,#808000";//柱体字体颜色 String RectHeadFontColor="";//柱体字体颜色 String PillarNum="1";//柱子数量 String PillarInfo="";//柱子说明 String Gradual="1";//是否渐变 String TopTitle=""; String BottomTitle=""; String LeftTitle=""; if (request.getParameter("CoordColor")!=null) { strCoordColor=request.getParameter("CoordColor"); } if (request.getParameter("Gradual")!=null) { Gradual=request.getParameter("Gradual"); } if (request.getParameter("Pillarflag")!=null) { Pillarflag=request.getParameter("Pillarflag"); } if (request.getParameter("RectHeadFontColor")!=null) { RectHeadFontColor=request.getParameter("RectHeadFontColor"); } if (request.getParameter("PillarInfo")!=null) { PillarInfo=request.getParameter("PillarInfo"); } if (request.getParameter("PillarNum")!=null) { PillarNum=request.getParameter("PillarNum"); } if (request.getParameter("TopTitle")!=null) { TopTitle=request.getParameter("TopTitle"); } if (request.getParameter("BottomTitle")!=null) { BottomTitle=request.getParameter("BottomTitle"); } if (request.getParameter("LeftTitle")!=null) { LeftTitle=request.getParameter("LeftTitle"); } out.clear(); //77CC50 //String list = "'销售十一部',31330.22,'销售十一部',22333.84,'销售十一部',131110.4677,'销售十一部',72950,'销售十一部',19620,'6',11000,'7',38300,'8',57870,'9',34720,'10',0,'11',66810"; //String list = "'销售十一部',31330.22,30000.11,'销售十一部',22333.84,20000.22,'销售十一部',131110.4677,130000.33,'销售十一部',72950,78000,'销售十一部',19620,15000,'6',11000,11000,'7',38300,40000,'8',57870,56000,'9',34720,34720,'10',0,1,'11',66810,66000"; //String list = "'销售十一部',31330.22,30000.11,30000.11,'销售十一部',22333.84,20000.22,30000.11,'销售十一部',131110.4677,130000.33,30000.11,'销售十一部',72950,78000,30000.11,'销售十一部',19620,15000,30000.11,'6',11000,11000,30000.11,'7',38300,40000,30000.11,'8',57870,56000,30000.11,'9',34720,34720,30000.11,'10',0,1,30000.11,'11',66810,66000,30000.11,"; Test bp = new Test(PillarNum); bp.setPillarflag(Pillarflag); //bp.setDataList(list); bp.setDataList(strChartData); //bp.setTopTitle("本月销售业绩"); //bp.setBottomTitle("日期"); bp.setTopTitle(TopTitle); bp.setBottomTitle(BottomTitle); bp.setLeftTitle(LeftTitle); bp.setFillRectColor(strCoordColor); bp.setRectHeadFontColor(RectHeadFontColor); bp.setPillarInfo(PillarInfo); bp.setGradual(Gradual); bp.paintToStream(response); //bp.paintToPic(null); %> </body> </HTML> <% out.clear(); %>
发表评论
-
十分钟搞定ec2服务器设置
2011-11-21 15:57 4559具体申请账号教程和EC2建立过程请搜索引擎搜索,在此不在多讲。 ... -
不晒简历,进京找工作
2010-03-26 11:01 1170我怕拍 简历就不晒了 月底31号离职,4月2号以后到京, ... -
java取存储过程error返回值的陷阱
2010-03-17 17:31 2865今天发现一个java取不到sqlserver存储过程返回值的问 ... -
阴阳历转换
2010-02-26 09:32 1173阳历转阴历:http://netfork.iteye.com/ ... -
Joda-Time 简介
2009-12-17 15:20 1434既然无法摆脱时间,为何不设法简化时间处理? 我们平时需要 ... -
计划再写一个c/c++调用java的例子
2009-09-01 08:26 1670因为写了一个java调用c/c++接口的例子(JNI),所以想 ... -
JNI 实例调用
2009-08-31 09:52 2529java c/cpp互相调用实例(姊妹篇之一) ... -
变量名命名、注释的重要性
2009-03-30 17:41 1180忙中偷闲无意翻到以前写的代码,侦测数据库连接池情况。我先不说具 ... -
eWebEdior 从数据库中读出转换到插件里的方法
2008-12-26 15:00 1055contentnew=contentnew.replaceAl ... -
动态读取配置文件
2008-08-21 15:16 1100import java.io.File; import ... -
preparedStatement中的like模糊查询
2008-07-16 10:51 2774sqlStr = "select id,name ... -
性能监控工具jamon好用还是jwebap好用
2008-03-25 18:02 2001现在的系统是jdbc或 连接池proxool访问DB的,想搞个 ... -
读取配置文件(简单IOC)
2007-11-21 03:08 1284IDeviceWriter.java package spri ...
相关推荐
Java中的柱状图生成主要依赖于`jfreechart`库,这是一个开源的Java图表库,能够生成各种类型的图表,如柱状图、饼图、线图等。要理解如何在Java中使用`jfreechart`生成柱状图,首先需要对以下几个知识点有深入的了解...
7. **数据可视化**: Java绘图组件在数据可视化方面有广泛的应用,比如使用`JFreeChart`库创建图表,可以生成线图、柱状图、饼图等多种图表,帮助用户更好地理解复杂的数据。 8. **性能优化**: 当处理大量数据或复杂...
JFreechart是一个Java库,用于生成高质量的2D图表,包括线图、柱状图、饼图等。这些问题可能与系统环境、字体配置、编码设置等因素有关。 **JFreechart不显示问题** JFreechart在Linux环境下不显示可能是由于以下...
这个库广泛用于数据可视化,支持多种图表类型,如柱状图、饼图、线图、散点图、甘特图以及组合图等。JFreeChart 可以方便地集成到 Java Swing 应用程序、JavaServer Pages (JSP)、Servlets 和其他 Java 应用中。 **...
这两个库是JFreeChart项目的一部分,这是一个开源的Java库,允许开发者生成各种类型的统计图表,如饼图、柱状图、线图、散点图等。 JFreeChart库依赖于另一个库——JCommon,所以在这里我们看到的"jcommon.jar"是...
JFreeChart 是一个用于Java平台的开源图表库,它提供了一系列丰富的图表类型,如饼图、柱状图、线图、散点图等,适用于各种数据可视化需求。这份1.0.6版本的开发者指南结合源码,将深入解析JFreeChart库的核心概念和...
JFreeChart是一款功能强大且易于使用的Java图表库,支持多种图表类型,包括饼图、柱状图、线图等。它提供了一个灵活的API,使得开发者能够根据需求定制各种复杂的图表。对于Web开发而言,JFreeChart通过生成图表图像...
JFreeChart作为一款开源的JAVA项目,专为图表开发而设计,支持丰富的图表类型,包括饼图、柱状图(含普通及堆栈柱状图)、线图、散点图、时间序列图、混合图、甘特图以及仪表盘等,充分满足商业系统对多样化图表展示...
JFreeChart是一个强大的开源Java库,它提供了丰富的图表功能,包括饼图、柱状图、线图、散点图等多种类型,适用于数据可视化的需求。在本篇文章中,我们将深入探讨如何利用JFreeChart 1.0.13版本,在JSP(JavaServer...
这个库支持多种类型的图表,包括柱状图、饼图、线图、面积图、散点图、甘特图、雷达图等,能够满足开发者在数据可视化方面的多样化需求。 JFreeChart的优势在于其灵活性和易用性。开发者可以自定义图表的每一个细节...
**JFreeChart** 是一个广泛使用的Java库,用于创建各种图表,如柱状图、饼图、线图、散点图、甘特图等。它为开发者提供了丰富的API,使得在Java应用程序、Web应用或者Swing组件中集成高质量的图表变得简单易行。本...
JFreeChart 是一个广泛使用的 Java 图表库,它为开发者提供了创建各种高质量图表的能力,包括饼图、柱状图、线图、散点图、甘特图等。在“jfreechart-1.0.11-demo-all.src.zip”这个压缩包中,包含了 JFreeChart ...
- JFreeChart是一个开源的Java图表库,支持多种图表类型(如线图、柱状图、饼图等),并且提供了丰富的定制选项。 - 它具有高度可配置性,可以自定义图表的颜色、样式等属性。 - 支持多种输出格式,如SVG、PNG、...
3. **JFreeChart库**: 这是一个强大的Java图表库,能够生成各种类型的统计图表,如饼图、柱状图、线图等。在本系统中,JFreeChart用于展示人力资源的数据分析结果,如员工年龄分布、性别比例、部门人数等,通过直观...
JFreeChart是一款强大的Java图形库,用于创建高质量的图表,如饼图、柱状图、线图、散点图以及更多复杂类型的图表。它在IT行业中被广泛应用于数据分析、报表生成以及可视化应用中。这个包包含了两个重要的jar文件,...
1. **图表组件**:JCommon提供了丰富的图表组件,如线图、柱状图、饼图、散点图等,这些图表可以进行定制化配置,满足各种数据可视化需求。开发者可以通过API轻松创建和修改图表样式,实现动态数据更新。 2. **数据...
JFreeChart 是一个用于 Java 的开源图表库,它提供了一种简单的方法来创建高质量的图表,包括线图、柱状图、饼图、散点图、甘特图以及更多类型的图表。这个项目是 Java 开发者在可视化数据时的常用工具,尤其对于...
JFreeChart 是一个流行的开源 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图、甘特图以及更复杂的图表,如3D图表和地理地图。这个库广泛应用于数据可视化,特别是在Java应用程序、Web应用和...
该库提供了一系列丰富的API,支持开发者创建多种类型的图表,包括但不限于饼图、柱状图、线图、散点图等。由于其强大的功能和灵活性,JFreeChart被广泛应用于各种Java应用程序中,无论是桌面应用还是Web应用。 ####...