使用JFreeReport生成报表[2]

[入库:2005年8月19日] [更新:2007年3月25日]

本文简介:选择自 legendinfo 的 blog

/**
 * helloworld.java
 */

package org.vivianj.jfreereport;

import java.awt.color;
import java.awt.event.windowadapter;
import java.awt.event.windowevent;
import java.awt.geom.point2d;
import javax.swing.table.defaulttablemodel;
import javax.swing.table.tablemodel;

import org.jfree.report.boot;
import org.jfree.report.elementalignment;
import org.jfree.report.jfreereport;
import org.jfree.report.reportprocessingexception;
import org.jfree.report.elementfactory.textfieldelementfactory;
import org.jfree.report.modules.gui.base.previewdialog;
import org.jfree.ui.floatdimension;

/**
 * 使用jfreereport生成报表的简单例子,用于演示使用jfreereport生成报表的一些基本步骤
 * 
 * 本例子中,为了简化操作,报表定义是使用java直接编码
 *
 * @ 作者 : bookman
 */
public class helloworld
{
  /**
   * 处理窗口关闭事件
   */
  protected static class closehandler extends windowadapter
  {
    public void windowclosing(final windowevent event)
    {
      system.exit(0);
    }
  }

  /**
   * 创建和显示简单的报表
   */
  public helloworld()
  {
 // 获得创建报表需要用到的数据
    final tablemodel data = createdata();
 //获得报表要用到的报表定义内容
    final jfreereport report = createreportdefinition();
 //将报表定义和数据结合
    report.setdata(data);
    try
    {
   //将生成的报表放到预览窗口中
      final previewdialog preview = new previewdialog(report);
      preview.addwindowlistener(new closehandler());
      preview.pack();
   //显示报表预览窗口
      preview.setvisible(true);
    }
    catch (reportprocessingexception e)
    {
      system.out.println(e);
    }

  }

  /**
   * 创建生成报表需要用到的数据
   *
   * @返回一个tablemodel实例
   */
  private tablemodel createdata()
  {

    final object[] columnnames = new string[]{"column1", "column2"};
    final defaulttablemodel result = new defaulttablemodel(columnnames, 100);
 int rownum = 0;
 int colnum = 0;
 for (;rownum < 100 ; rownum++)
 {
        result.setvalueat("say hello " + rownum + "次", rownum, 0);
        result.setvalueat("say world " + rownum + "次" , rownum, 1);
 }
 
    return result;

  }

  /**
   * 创建一个报表定义
   *
   * @返回一个报表定义实例
   */
  private jfreereport createreportdefinition()
  {

    final jfreereport report = new jfreereport();
    report.setname("a very simple report");
 /**
   * 定义要显示报表第一列的样式
  */
    textfieldelementfactory factory = new textfieldelementfactory();
    factory.setname("t1");
    factory.setabsoluteposition(new point2d.float(0, 0));
    factory.setminimumsize(new floatdimension(150, 20));
    factory.setcolor(color.black);
    factory.sethorizontalalignment(elementalignment.left);
    factory.setverticalalignment(elementalignment.middle);
    factory.setnullstring("-");
    factory.setfieldname("column1");
    report.getitemband().addelement(factory.createelement());
 /**
   * 定义要显示报表第二列的样式
  */
    factory = new textfieldelementfactory();
    factory.setname("t2");
    factory.setabsoluteposition(new point2d.float(200, 0));
    factory.setminimumsize(new floatdimension(150, 20));
    factory.setcolor(color.black);
    factory.sethorizontalalignment(elementalignment.left);
    factory.setverticalalignment(elementalignment.middle);
    factory.setnullstring("-");
    factory.setfieldname("column2");
    report.getitemband().addelement(factory.createelement());
 /**
   * 返回一个报表定义的实例
  */
    return report;

  }

  public static void main(final string[] args)
  {
    // 初始化jfreereport
    boot.start();

    //调用演示实例
    new helloworld();
  }

}

2.3  运行例子

如果你执行了1.3中规定的步骤,你可以进入命令行界面,然后进入%demo_home%目录下,修改setenv.cmd中的相关设置,执行serenv.cmd设置环境变量。执行java org.vivianj.jfreereport.helloworld查看运行结果。下面这个图片是作者执行后结果的屏幕截图:

大家可以看到,jfreereport已经自动帮我们实现了分页。上面这个图片显示的是第一页的数据,你可以通过工具栏中的查看其它页面中的内容。

2.4  基本步骤解释

使用jfreereport生成报表通常需要以下三个基本步骤:

本文关键:使用JFreeReport生成报表
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top