⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 firstjfreechart.java

📁 java生成图形验证码源代码
💻 JAVA
字号:
 
package com.jfreechar;

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.general.PieDataset;
import org.jfree.data.time.Day;
import org.jfree.data.time.Minute;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;

import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.util.Calendar;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;

import javax.swing.*;


public class FirstJFreeChart extends ApplicationFrame {
   /**
	 * 
	 */
	private static final long serialVersionUID = -3594083889286213233L;

//构造函数
   public FirstJFreeChart(String s,Map map,int i){
     super(s);
     setContentPane(createDemoPanel(map,i));
   }
  
   public static void main(String[] args){
	     Map map=new Hashtable();
	     map.put("管理人员","18.02D");
	     map.put("市场人员","20.23D");
	     map.put("开发人员","60.02D");
	     map.put("OEM人员","10.02D");
	     map.put("其他人员","5.11D");
	  for(int i=1;i<4;i++){
     FirstJFreeChart fjc = new FirstJFreeChart("CityInfoPort公司组织架构图",map,i);
     fjc.pack();
     RefineryUtilities.centerFrameOnScreen(fjc);
     fjc.setVisible(true);
	  }
   }
  
   //生成饼图数据集对象
   public static PieDataset createDataset(Map map){
     DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
     Iterator it=map.keySet().iterator();
     for(;it.hasNext();){
    	 String   key   =   (String)   it.next();   
         Object   value   =   map.get(key); 
         System.out.println(key+"-->"+value);
         defaultpiedataset.setValue(key,Double.parseDouble(value.toString()))  ;
     }
    
     return defaultpiedataset;
   }
  
   //生成图表主对象JFreeChart
   public static JFreeChart createChart(Dataset dataset,int i){
     //定义图表对象
     JFreeChart jfreechart =null;
     if(i==1){
       jfreechart= ChartFactory.createPieChart("CityInfoPort公司组织架构图",(PieDataset)dataset,true,true,true);
       //获得图表显示对象
       PiePlot pieplot = (PiePlot)jfreechart.getPlot();//CategoryPlot
       //设置图表标签字体
       pieplot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
       pieplot.setNoDataMessage("No data available");
       pieplot.setCircular(true);
       pieplot.setLabelGap(0.01D);//间距
     } else if(i==2){
    	 jfreechart=ChartFactory.createBarChart3D("柱状图",
				"Category", "Value", (CategoryDataset)dataset, PlotOrientation.VERTICAL, true,
				true, false);
    	 jfreechart.setBackgroundPaint(new Color(0xbbbbdd));//设置背景色
         CategoryPlot categoryplot = jfreechart.getCategoryPlot();//得到图形以便精细设置
         NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();//取得该类图形的范围数字轴,指纵坐标
         numberaxis.setTickLabelFont(new Font("黑体",Font.ITALIC,18));//设置纵坐标的字体,风格,大小

         numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());//设置纵坐标以标准整形为单位
         BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer();//barrenderer表示得到所有的柱形集合对象
         barrenderer.setDrawBarOutline(false);//不显示柱形的外边框
         barrenderer.setMaximumBarWidth(2D);//设置每个图形的最大宽度
        // GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, Color.black);//从上到下渐变的颜色
        // GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F, 0.0F, Color.red);//从上到下渐变的颜色
        // barrenderer.setSeriesPaint(0, gradientpaint);//第一个柱形
       //  barrenderer.setSeriesPaint(1, gradientpaint1);//第二个柱形   	 
     } else if(i==3){
    	 jfreechart=ChartFactory.createTimeSeriesChart(
    				 	"时序图", "Date", "Rate", (XYDataset)dataset, true, true, false);
    	 XYPlot plot = (XYPlot) jfreechart.getPlot();
    	 XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
    	 plot.setBackgroundPaint(Color.white);//设置网格背景颜色
    	 plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
    	 plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色
    	 plot.setAxisOffset(new RectangleInsets(10D, 10D, 10D, 10D));//设置曲线图与xy轴的距离,即曲线与xy轴贴近的距离
    	 xylineandshaperenderer.setBaseShapesVisible(true);//设置曲线是否显示数据点
     }System.out.println("===>"+i);
    
     return jfreechart;
   }
   
   public static CategoryDataset createCategoryDataset(Map map){
	   DefaultCategoryDataset defaultcategorydataset=new DefaultCategoryDataset();
	   Iterator it=map.keySet().iterator();
	   int i=3;
	     for(;it.hasNext();){
	    	 i=i+3;
	    	 String   key   =   (String)   it.next();   
	         Object   value   =   map.get(key); 
	         System.out.println(key+"-->"+value);
	         defaultcategorydataset.setValue(i, key.toString(), value.toString());
	     }
	   return defaultcategorydataset;
   }
  
   public static XYDataset createXYDataset(Map map){
	   Iterator it=map.keySet().iterator();
		Calendar calender = Calendar.getInstance();
		int year = calender.get(Calendar.YEAR);
		 Day current = new Day(1, Month.JANUARY, year);
		XYDataset data = new TimeSeriesCollection();
	   for(;it.hasNext();){  
		   String key=(String)it.next();
		   Object value=map.get(key);
		   System.out.println(key+"-->"+value);
		 TimeSeries series=new TimeSeries(key);
		 series.add(current,Double.parseDouble(value.toString()));
		 ((TimeSeriesCollection)data).addSeries(series);
			current = (Day) current.next();
	   }
	   ((TimeSeriesCollection)data).setDomainIsPointsInTime(true);
	   
	   
	 /*  TimeSeries series = new TimeSeries("Random Data");
		//Day current = new Day(1, Month.JANUARY, 2001);
		for (int i = 0; i < 100; i++) {
			series.add(current, Math.random() * 100);
			current = (Day) current.next();
		}
		*/
		 
	   return data;
   }
   //生成显示图表的面板
   public static JPanel createDemoPanel(Map map,int i){
     JFreeChart jfreechart=null;
     if(i==1){
      jfreechart= createChart(createDataset(map),i);
     } else if(i==2){
    	 jfreechart=createChart(createCategoryDataset(map),i);
     } else if(i==3){
    	 jfreechart=createChart(createXYDataset(map),i);
     }
     return new ChartPanel(jfreechart);
   }
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -