求教jFreeChart

evangelionxb 2011-01-07 06:19:58
如题,看着比较有意思。
有没较新的教程和例子?
还有最想知道它的demo
动态刷jvm的是怎么做的!
我现在项用数据库+jfreechart+tomcat做一个。
谁能给点资料。
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
evangelionxb 2011-01-10
  • 打赏
  • 举报
回复

package com.jfc.servlet;

import java.awt.Font;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.data.jdbc.JDBCPieDataset;

/**
* Servlet implementation class for Servlet: PieByServlet
*
*/
public class PieByServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;

/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public PieByServlet() {
super();
}

/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setCharacterEncoding("gbk");
response.setContentType("image/jpeg");
PieDataset pd = getDataset();
JFreeChart jfc = ChartFactory.createPieChart3D("chart标题", pd, true, true, false);
//乱码解决部分
TextTitle textTitle = jfc.getTitle();
textTitle.setFont(new Font("宋体",Font.PLAIN,20));

PiePlot plot = (PiePlot) jfc.getPlot();
plot.setLabelFont(new Font("宋体",Font.BOLD,20));

jfc.getLegend().setItemFont(new Font("宋体",Font.PLAIN,12));
//
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),0.5f,jfc,800,600,null);

}

private PieDataset getDataset() {
// TODO Auto-generated method stub
Connection con = null;
JDBCPieDataset dataset = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://127.0.0.1:3306/xb1?user=root&password=sa";
con = DriverManager.getConnection(url);
String query = "select name,score from student";
dataset = new JDBCPieDataset(con);
dataset.executeQuery(query);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{

}
return dataset;
}
}

用mysql做的简单的例子
jdbc时候和app不一样就在于dataset不一样,其他的不是很难。
加油
evangelionxb 2011-01-10
  • 打赏
  • 举报
回复
package com.jfc.xb1;

import java.awt.Font;
import java.io.FileNotFoundException;
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.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class BarChartDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D("标题", "目录轴标签", "数值轴标签", dataset, PlotOrientation.HORIZONTAL, true, false, false);
//ChartFactory.createBarChart3D(标题,目录轴标签,数值轴标签,数据集,图表方向,是否显示图例,是否生成工具,是否生成URL链接)

//进行乱码处理
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体",Font.PLAIN,20));

CategoryPlot plot = chart.getCategoryPlot();
//domainAxis为柱状图中的X轴
CategoryAxis domainAxis = plot.getDomainAxis();
//x轴标题上的字体
domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,20));
//X轴坐标上的字体
domainAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,20));
//处理y轴字体
ValueAxis valueAxis = plot.getRangeAxis();
valueAxis.setLabelFont(new Font("宋体",Font.PLAIN,20));
valueAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,20));


plot.setNoDataMessageFont(new Font("宋体",Font.PLAIN,20));
chart.getLegend().setItemFont(new Font("宋体",Font.PLAIN,20));


FileOutputStream fos_jpg = null;

try {
fos_jpg = new FileOutputStream("F:\\BarChartDemo.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg, 0.5f, chart, 400, 300, null);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try{
fos_jpg.close();
}catch(Exception e){

}
}
}

//获取一个组合型数据集对象
private static CategoryDataset getDataSet2(){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(200, "北京", "栗子");
dataset.addValue(200, "上海", "栗子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(400, "北京", "西瓜");
dataset.addValue(400, "上海", "西瓜");
dataset.addValue(500, "北京", "香蕉");
dataset.addValue(500, "上海", "香蕉");

return dataset;
}

}

目录轴标签 这几个字的方向有点小问题啊
ccip1 2011-01-07
  • 打赏
  • 举报
回复
1根据需要的图形生成dataset ,
2根据数据源生成 报表的图形
3我一般都是数据流生成JPG或PNG图片

大致就是这个步骤,自己多看看API就差不多了
jorneyR 2011-01-07
  • 打赏
  • 举报
回复
下载jFreeChart后里面就有例子:jfreechart-1.0.13-demo.jar
很多的例子,例子里就可以直接看源码的。
MJiao 2011-01-07
  • 打赏
  • 举报
回复
jFreeChart 去网上找个例子看看就应该没问题
JerryZhou_ 2011-01-07
  • 打赏
  • 举报
回复
jFreeChart 我这里貌似有demo 包括五六种类型的统计图吧?
不过动态刷jvm 这个功能貌似没有...

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧