자바 표 작성 이미지 소스 코드 생 성

최근 에 컬러 편지 인 터 페 이 스 를 쓰 려 면 설정 정보 에 따라 자동 으로 그림 을 생 성 해 야 합 니 다. jfreechar 는 기둥 그림, 선도, 떡 그림, 기둥 선 합 도, 스 택 그림 등 모든 것 을 해결 할 수 있 고 차원 표 는 실현 되 지 않 습 니 다.html 2 image 를 통 해 이 루어 지 는 것 은 상식 적 이 었 으 나 스타일 은 받 아들 일 수 없 었 고, 어 쩔 수 없 이 '자바 코드' 를 직접 쓸 수 밖 에 없 었 다.소스 코드 는 아래 와 같 습 니 다. 참고 하 시기 바 랍 니 다.
 
package table;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class TestTable {
	BufferedImage image;
	void createImage(String fileLocation) {
		try {
			FileOutputStream fos = new FileOutputStream(fileLocation);
			BufferedOutputStream bos = new BufferedOutputStream(fos);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
			encoder.encode(image);
			bos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void graphicsGeneration() {
		//      +  +  
		int totalrow = 6;
		int totalcol = 5;
		int imageWidth = 1024;
		int imageHeight = totalrow*40+20;
		int rowheight = 40;
		int startHeight = 10;
		int startWidth = 10;
		int colwidth = (int)((imageWidth-20)/totalcol);
		
		image = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB);
		Graphics graphics = image.getGraphics();
		
		graphics.setColor(Color.WHITE);
		graphics.fillRect(0,0, imageWidth, imageHeight);
		graphics.setColor(new Color(220,240,240));

		//   
		for(int j=0;j<totalrow-1;j++){
			graphics.setColor(Color.black);
			graphics.drawLine(startWidth, startHeight+(j+1)*rowheight, imageWidth-5, startHeight+(j+1)*rowheight);
		}
		//  
		graphics.setColor(Color.black);
		graphics.drawLine(startWidth, imageHeight-90, imageWidth-5, imageHeight-90);
		
	
		//   
		for(int k=0;k<totalcol;k++){
			graphics.setColor(Color.black);
			graphics.drawLine(startWidth+k*colwidth, startHeight+rowheight, startWidth+k*colwidth, imageHeight-50);
		}
		//  
		graphics.setColor(Color.black);
		graphics.drawLine(imageWidth-5, startHeight+rowheight,imageWidth-5, imageHeight-50);
		
		//    
		Font font = new Font("    ",Font.BOLD,20);
		graphics.setFont(font);
		
		//   
		String title = "      ";
		graphics.drawString(title, imageWidth/3+startWidth, startHeight+rowheight-10);
		
		font = new Font("    ",Font.BOLD,18);
		graphics.setFont(font);
		
		//    
		String[] headCells = {"  ","  ","  ","  ","  "};
		for(int m=0;m<headCells.length;m++){
			graphics.drawString(headCells[m].toString(), startWidth+colwidth*m+5, startHeight+rowheight*2-10);
		}
	
		//    
		font = new Font("    ",Font.PLAIN,16);
		graphics.setFont(font);
		String[][] cellsValue = {{"101","xiaozhang","13","M","55"},
								 {"102","xiaowang","14","F","53"},
								 {"103","xiaoli","15","M","58"}};
		//    
		for(int n=0;n<cellsValue.length;n++){
			String[] arr = cellsValue[n];
			for(int l=0;l<arr.length;l++){
				graphics.drawString(cellsValue[n][l].toString(), startWidth+colwidth*l+5, startHeight+rowheight*(n+3)-10);
			}
		}
		
		font = new Font("    ",Font.BOLD,18);
		graphics.setFont(font);
		graphics.setColor(Color.RED);
		
		//   
		String remark = "  :      。";
		graphics.drawString(remark, startWidth, imageHeight-30);
	
		createImage("c:\\1.jpg");
	}

	public static void main(String[] args) {
		TestTable cg = new TestTable();
		try {
			cg.graphicsGeneration();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

좋은 웹페이지 즐겨찾기