`
收藏列表
标题 标签 来源
BaseDao dao
package com.newer.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
  /**
   * 获得数据库连接
   * @return conn
   */
  public Connection getConnection(){
    Connection conn = null;
    // oracle driver
    String driverName = "oracle.jdbc.driver.OracleDriver";
    // oracle url
    String url = "jdbc:oracle:thin:@127.0.0.1:1521:newer";
    // oracle username & password
    String username = "scott";
    String password = "tiger";
    
    try{
      // 加载数据库驱动
      Class.forName(driverName); 
      // 获得数据库连接对象
      conn = DriverManager.getConnection(url,username,password);
    }catch(ClassNotFoundException cnfe){
      cnfe.printStackTrace();
    }catch(SQLException sqle) {
      sqle.printStackTrace();
    }
    return conn;
  }
  
  /**
   * 关闭数据库连接
   * @param conn
   * @param ps
   * @param rs
   */
  public void close(Connection conn,PreparedStatement ps,ResultSet rs){
    if(rs!=null) {
      try {
        rs.close();
      }catch(SQLException sqle) {
        sqle.printStackTrace();
      }
    }
    if(ps!=null) {
      try {
        ps.close();
      }catch(SQLException sqle) {
        sqle.printStackTrace();
      }
    }
    if(conn!=null) {
      try {
        conn.close();
      }catch(SQLException sqle) {
        sqle.printStackTrace();
      }
    }
  }
}
jfreechart 实例 jfreechart
package org.flysoft.support.jfree.chart;

import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.io.FileOutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.time.TimeSeriesDataItem;

public class Test {
	/**
	 * 创建曲线图
	 */
	public static void saveTimeSeries(String pach){
		//create a default chart based on some sample data...
		//曲线图标题
		String title = "趋势分析";
		//曲线图X轴提示
		String domain = "月份走势";
		//曲线图Y轴提示
		String range = "应收余额";
		//曲线图自标题
		String subtitleStr = "2009财年分析";
		//创建时间数据源
		//每一个TimeSeries在图上是一条曲线
		TimeSeries ca = new TimeSeries("用友");
		for (int i = 1999; i < 2005; i++) {
		for (int mon = 0; mon < 12; mon++) {
		//ca.add(new Month(mon + 1, i), new Double(500 + Math.random() * 100));
		//TimeSeriesDataPair是一个时间点的数值体现
		ca.add(
		new TimeSeriesDataItem(
		new Day(1, mon + 1, i),
		new Double(500 + Math.random() * 100)));
		}
		}

		TimeSeries ibm = new TimeSeries("金碟");
		for (int i = 1999; i < 2005; i++) {
		for (int mon = 0; mon < 12; mon++) {
		//ibm.add(new Month(mon+1,i),new Double(400-Math.random()*100));
		ibm.add(
		new TimeSeriesDataItem(
		new Day(1, mon + 1, i),
		new Double(400 - Math.random() * 100)));
		}
		}

		TimeSeries king = new TimeSeries("东软");
		for (int i = 1999; i < 2005; i++) {
		for (int mon = 0; mon < 12; mon++) {
		//ibm.add(new Month(mon+1,i),new Double(400-Math.random()*100));
		king.add(
		new TimeSeriesDataItem(
		new Day(1, mon + 1, i),
		new Double(300 - Math.random() * 100)));
		}
		}
		//时间曲线数据集合
		TimeSeriesCollection dataset = new TimeSeriesCollection();
		dataset.addSeries(ca);
		dataset.addSeries(ibm);
		dataset.addSeries(king);
		//dataset.addSeries(jpy);
		//dataset.addSeries(mav);
		//时间曲线元素
		JFreeChart chart =
		ChartFactory.createTimeSeriesChart(
		title,
		domain,
		range,
		dataset,
		true,
		true,
		false);
		//then customise it a little...
		TextTitle subtitle =
		new TextTitle(subtitleStr, new Font("黑体", Font.BOLD, 12));
		chart.addSubtitle(subtitle);
		chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));
		//pie.setSeriesLabelFont(new Font("黑体", Font.BOLD, 15));
		chart.setBackgroundPaint(
		new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
		//sysout
		//输出文件到指定目录
		//String rfname = MathUtil.getRoundCode(22) + ".jpeg";
		//String fileName = "d:/test/" + rfname;
		try {
		//for
		//System.out.println();
			//保存 图片ChartUtilities.saveChartAsJPEG(new File(fileName), 100, chart, 600, 600);
			FileOutputStream fos = new FileOutputStream(pach);
			ChartUtilities.writeChartAsPNG(fos, chart, 1500, 1200);
			
		}
		//log.info("....Create image File:" + fileName);
		 catch (Exception exz) {
		System.out.print("....Cant't Create image File");
		}

	}
	//创建柱状图例子
	public static void CategoryDatasetsave(String pach){
		//柱状图
		try {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
	
		for (int r = 0; r <=5; r++) {
			String rowKey = "客户 [" + (r + 1)+"]" ;
//			第一层循环:分析对象
			for (int c = 0; c < 6; c++) {
//			第二层循环:分析对象在时间点上的数据
			String columnKey = "2001年" + (c + 1) + "月";
			dataset.addValue(new Double(r * c + 5), rowKey, columnKey);
			}
		}
		//PlotOrientation.VERTICAL,柱状方向 为垂直
		//PlotOrientation.HORIZONTAL 柱状方向 为水平
		JFreeChart chart = ChartFactory.createBarChart(
		"Bar Chart",
		"Category",
		"Value",
		dataset,
		PlotOrientation.VERTICAL,
		false, false, false
		);
		FileOutputStream fos = new FileOutputStream(pach);
		ChartUtilities.writeChartAsPNG(fos, chart, 1500, 1200);
		}
		catch (Exception e) {
		System.err.println(e.toString());
		}
		finally {
		}


	}
	/**
	 * 饼图
	 * @param pach
	 */
	public static void save(String pach){
	String title = "空调2002年市场占有率";
	//设定数据源
	DefaultPieDataset piedata = new DefaultPieDataset();
	//第一个参数为名称,第二个参数是double数

		piedata.setValue("N95", 12.2);
		piedata.setValue("N97", 5.5);
		piedata.setValue("康佳998", 17.1);
		piedata.setValue("索爱9950", 9.0);
		piedata.setValue("索爱5560", 19.0);
	//创建jfreechart,都使用chartfactory来创建jfreechart,很标准的工厂设计模式
		JFreeChart chart =
			ChartFactory.createPieChart3D(title, piedata, true, true, true);
	//设定图片标题
	chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));
	//chart.addsubtitle(new texttitle("2002财年分析", new font("隶书", font.italic, 12)));
	//设定背景
	chart.setBackgroundPaint(Color.white);
	//chart.s
	//饼图使用一个pieplot 
	PiePlot pie = (PiePlot)chart.getPlot();
	//pie.setsectionlabeltype(pieplot.name_and_percent_labels);

	//pie.setsectionlabeltype(PiePlot.name_and_value_labels);
	//设定显示格式(名称加百分比或数值)
	//pie.setPercentFormatString("#,###0.0#%");
	//设定百分比显示格式
	//pie.setBackGroundPaint(Color.white);
	//pie.setsectionlabelfont(new Font("黑体", font.truetype_font, 12));
	//设定背景透明度(0-1.0之间)
	//pie.setbackgroundalpha(0.6f);
	//设定前景透明度(0-1.0之间)
	//pie.setforegroundalpha(0.90f);
	//输出文件到指定目录
	//String rfname = MathUtil.getroundcode(12) + ".jpeg";
	//String filename = "d:/test/" + rfname;
	try {
		FileOutputStream fos = new FileOutputStream(pach);
		ChartUtilities.writeChartAsPNG(fos, chart, 1500, 1200);
	//可以保存文件为jpg或png格式。
	//chartutilities.savechartasjpeg(new file(filename), 100, chart, 600, 600);
	//第一个参数为文件名
	//第二个参数质量
	//第三个参数为哪个chart创建图片
	//第四个宽度
	//第五个高度
	} catch (Exception exz) {
	System.out.print("....cant't create image file");
	}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		CategoryDatasetsave("D://柱状.jpg");
		saveTimeSeries("D://曲线图.jpg");
		save("D://饼图.jpg");

	}

}
jfreechar 编写 jfreechartdemo
一 :
package com.hjz.biz;

import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

public class BarChartDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		CategoryDataset dataset = getDataSet2();

		JFreeChart chart = createBarChart3D(dataset);
		FileOutputStream fos_jpg = null;
		try {
			fos_jpg = new FileOutputStream("D:\\fruit.jpg");

			ChartUtilities
					.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400, 300, null);
		} finally {
			try {
				fos_jpg.close();
			} catch (Exception e) {
			}
		}
	}

	/**
	 * 柱状图
	 * 
	 * @param dataset
	 * @return
	 */
	public static JFreeChart createBarChart3D(CategoryDataset dataset) {

		JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
				"水果", // 目录轴的显示标签
				"产量", // 数值轴的显示标签
				dataset, // 数据集
				PlotOrientation.VERTICAL, // 图表方向:水平、垂直
				true, // 是否显示图例(对于简单的柱状图必须是false)
				false, // 是否生成工具
				false // 是否生成URL链接
				);
		return chart;
	}

	/**
	 * 柱状图
	 * 
	 * @param dataset
	 * @return
	 
	public static JFreeChart createPie3DChart(DefaultPieDataset dataset) {

		JFreeChart chart = ChartFactory.createPie3DChart("水果产量图", // 图表标题
				dataset, true, // 是否显示图例
				false, false);
		return chart;
	}
	*/

	/**
	 * * 获取一个演示用的简单数据集对象 *
	 * 
	 * @return
	 */
	private static CategoryDataset getDataSet() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(100, null, "苹果");
		dataset.addValue(200, null, "梨子");
		dataset.addValue(300, null, "葡萄");
		dataset.addValue(400, null, "香蕉");
		dataset.addValue(500, null, "荔枝");
		return dataset;
	}

	/**
	 * * 获取一个演示用的简单数据集对象 *
	 * 
	 * @return
	 */
	private static DefaultPieDataset getDataSet1() {
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("苹果", 100);
		dataset.setValue("梨子", 200);
		dataset.setValue("葡萄", 300);
		dataset.setValue("香蕉", 400);
		dataset.setValue("荔枝", 500);
		return dataset;
	}

	/**
	 * * 获取一个演示用的组合数据集对象 *
	 * 
	 * @return
	 */
	private static CategoryDataset getDataSet2() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(100, "北京", "苹果");
		dataset.addValue(100, "上海", "苹果");
		dataset.addValue(100, "广州", "苹果");
		dataset.addValue(200, "北京", "梨子");
		dataset.addValue(200, "上海", "梨子");
		dataset.addValue(200, "广州", "梨子");
		dataset.addValue(300, "北京", "葡萄");
		dataset.addValue(300, "上海", "葡萄");
		dataset.addValue(300, "广州", "葡萄");
		dataset.addValue(400, "北京", "香蕉");
		dataset.addValue(400, "上海", "香蕉");
		dataset.addValue(400, "广州", "香蕉");
		dataset.addValue(500, "北京", "荔枝");
		dataset.addValue(500, "上海", "荔枝");
		dataset.addValue(500, "广州", "荔枝");
		return dataset;

	}

}

二、JFreeChart配置安装
    1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar
       是例子程序(该部分留给大家自己去研究)
    2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、lib\jcommon-0.9.6.jar、
       lib\gnujaxp.jar
    3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%\LIB中,同时在环境变量CLASSPATH中加入
       如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:
       把上述三个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文件,在其中加入如下代码:
                <servlet>
                    <servlet-name>DisplayChart</servlet-name>
                    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
                </servlet>
                <servlet-mapping>
                    <servlet-name>DisplayChart</servlet-name>
                    <url-pattern>/servlet/DisplayChart</url-pattern>
                </servlet-mapping>
               至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类

三、JFreeChart功能介绍
    JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面:
    pie charts (2D and 3D):饼图(平面和立体)
    bar charts (regular and stacked, with an optional 3D effect):柱状图
    line and area charts:曲线图
    scatter plots and bubble charts
    time series, high/low/open/close charts and candle stick charts:时序图
    combination charts:复合图
    Pareto charts
    Gantt charts:甘特图
    wind plots, meter charts and symbol charts
    wafer map charts
    (态图表,饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表)
    图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联
    
    JFreeChart核心类库介绍:
            研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与图形
    本身有关,后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究,以后有时间我会告诉大家怎么去
    研究源码。
         核心类主要有:
           org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
           org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类
           org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持
           org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴和横轴
           org.jfree.chart.render.XXXRender:负责如何显示一个图表对象
           org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接
           XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类


    
四、JFreeChart开发(Application/Applet)
1、pie charts,代码如下
/**
 * Description:This application is the first jfreechart
 * authort:谢莫锋
 * Datetime:20058-02-11
 */
package demo;

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.data.general.DefaultPieDataset;

public class FirstJFreeChart {
  public FirstJFreeChart() {
  }
  
  public static void main(String[] args){
    DefaultPieDataset dpd = new DefaultPieDataset();
    dpd.setValue("管理人员",25);
    dpd.setValue("市场人员",25);
    dpd.setValue("开发人员",45);
    dpd.setValue("其他人员",5);
    
    //Create JFreeChart object
    //参数可以查看源码
    JFreeChart pieChart = ChartFactory.createPieChart("CityInfoPort公司组织架构图",dpd,true,true,false);
    ChartFrame pieFrame = new ChartFrame("CityInfoPort公司组织架构图",pieChart);
    pieFrame.pack();
    pieFrame.setVisible(true);
  }
}

上面例子可以进一步改进,如下:
/**
 * Description:This application is the first jfreechart
 * authort:谢莫锋
 * Datetime:20058-02-11
 */
package com.cityinforport.demo;

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import java.awt.Font;
import javax.swing.*;


public class FirstJFreeChart extends ApplicationFrame {
  //构造函数
  public FirstJFreeChart(String s){
    super(s);
    setContentPane(createDemoPanel());
  }
  
  public static void main(String[] args){
    FirstJFreeChart fjc = new FirstJFreeChart("CityInfoPort公司组织架构图");
    fjc.pack();
    RefineryUtilities.centerFrameOnScreen(fjc);
    fjc.setVisible(true);
  }
  
  //生成饼图数据集对象
  public static PieDataset createDataset(){
    DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
    defaultpiedataset.setValue("管理人员",10.02D);
    defaultpiedataset.setValue("市场人员",20.23D);
defaultpiedataset.setValue("开发人员",60.02D);
    defaultpiedataset.setValue("OEM人员",10.02D);
    defaultpiedataset.setValue("其他人员",5.11D);
    
    return defaultpiedataset;
  }
  
  //生成图表主对象JFreeChart
  public static JFreeChart createChart(PieDataset piedataset){
    //定义图表对象
    JFreeChart jfreechart = ChartFactory.createPieChart("CityInfoPort公司组织架构图",piedataset,true,true,false);
    //获得图表显示对象
    PiePlot pieplot = (PiePlot)jfreechart.getPlot();
    //设置图表标签字体
    pieplot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
    pieplot.setNoDataMessage("No data available");
    pieplot.setCircular(true);
    pieplot.setLabelGap(0.01D);//间距
    
    return jfreechart;
  }
  
  //生成显示图表的面板
  public static JPanel createDemoPanel(){
    JFreeChart jfreechart = createChart(createDataset());
    return new ChartPanel(jfreechart);
  }
  
}
Global site tag (gtag.js) - Google Analytics