<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    靈魂-放水

    為學日益,為道日損。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
    概述

    我們對第一部分的內容做個簡要的回憶,第一部分主要是介紹使用iReport如何制作一個數據報表,我認為文章比較詳細的介紹“如何從零到滿足大部分需求報表出現”。但是文中沒有涉及Jasperreport的任何內容,目的是讓你純粹的理解如何做報表,因為做報表和把報表內嵌到應用程序編程是可以分工的,便于整合也便于分解。

    我們知道 iReport 是一個 Jasperreport 的前端開發工具, iReport 用來制作和預覽報表,為應用使用報表提供足夠的前端支持。現在簡要的介紹 Jasperreport 是如何工作的,這樣你可以更好的理解 iReport 是如何幫助 Jasperreport 實現前端的工作,其實這些工作在我們看來就是“臟活”,為什么呢?看看下面的資料就知道了。
    通過上圖你大概已經明白Jasperreport的工作原理了。首先是要有一個XML文件(一般是以jrxml后綴),那么這個XML文件從那里來呢?做什么用呢? 這個XML文件就是報表的定義文件,整個報表的每一個細節都在這個XML文件之中定義,一個簡單報表的xml文件就有幾百行,你可以手工編輯這個XML文件(一行一行,一段一段的編輯吧――這就是所謂的“臟活”)。如果是手工制作這個XML文件,單從效率上考慮就不允許,特別是現在很多應用系統的開發時間變得越來越緊張,總是會在時間上出問題。節省時間最好的辦法就是充分的利用自動化工具,詹姆斯.馬丁的軟件工程思想也是反復的強調過程的自動化,如何做到自動化呢?就是充分的利用自動化工具集成到開發流程,說了一大堆不就是為了說要用iReport來做報表嗎!這是我們第一部分已經完成的工作,但是這里重要的是理解Jasperreport的工作原理。

    2、結合Jbuilder開發胖客戶端報表應用

    2.1 、建立 Application

    參考 Jbuilder 有關資料。只要是普通 Window 窗口應用即可。

    2.2 、引入 JasperReports 需要的庫文件

    通過 jbuilder9 Tool 】-【 configure Libraries 】-按最左邊的【 New 】-輸入一個名稱,比如 Report -【 add 】按鈕,導航到 iReport lib 目錄,把 lib 目錄里面的所有文件引入。如圖:

    按兩次 OK 回到 Jbuilder 的開發界面。

    2.3 、向工程添加 Report 系列庫文件

    通過右擊工程,選擇【 properties 】-【 paths Label -【 Required Libraries Label -【 Add 】按鈕-選擇“ Report ”-按兩次 OK 回到 Jbuilder 的開發界面。這樣就添加完成了需要的庫文件了。這么做是比較理想的,但是報表運行時可能不需要 iReport lib 下所有的 jar 文件。

    2.4 、在主界面上添加需要的組件

    在主 Frame 添加一個 Button 和一個 Label 以及一個 TextBox ,當然你也可以通過創建菜單連接,如圖:

    這個窗體時用來做測試用的,實際的界面可能很復雜,其中的 TextBox 就是為報表的變量做準備的。這里填寫的值就是要傳遞給報表的變量,也就是第一部分定義的帶 $P{} 符號的變量,程序會把他們對應起來。 Button 的單擊事件代碼如下:

    /**

    ?? * RptDialog 對話框是用來承載報表的顯示。

    ?? * @param e

    ?? */

    ? void jButton1_actionPerformed(ActionEvent e) {

    ?????? ?// 請創建一個對話框類 RptDialog

    ???? RptDialog dlg = new RptDialog(this.jGroupID.getText());

    ???? Dimension dlgSize = dlg.getPreferredSize();

    ???? Dimension frmSize = getSize();

    ???? Point loc = getLocation();

    ???? dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,

    ???????????????????? (frmSize.height - dlgSize.height) / 2 + loc.y);

    ???? dlg.setModal(true);

    ???? dlg.pack();

    ???? dlg.show();

    ? }

    RptDialog 是接下來制作的一個 Dialog 對象,通過 Jbuilder 新建一個 Dialog 對象并命名 RptDialog RptDialog 的代碼如下:

    import java.awt.*;

    import javax.swing.*;

    import dori.jasper.engine.*;

    import dori.jasper.view.*;

    import dori.jasper.engine.util.JRLoader;

    import java.sql.Connection;

    import java.io.File;

    import java.util.Map;

    import java.util.HashMap;

    import mytest.trac.CommectionDB;

    /**

    ?* <p>Title: RptDialog </p>

    ?* <p>Description: 報表承載對話框 </p>

    ?* <p>Copyright: Copyright (c) 2004</p>

    ?* <p>Company: *****</p>

    ?* @author 李克喜

    ?* @version 1.0

    ?*/

    public class RptDialog extends JDialog {

    ? JPanel ReportPan = new JPanel();

    ? BorderLayout borderLayout1 = new BorderLayout();

    ? //Bug 項目名稱

    ? String proname = "";

    ? // 顯示報表需要的控件

    ? JRViewer jrview;

    ? public RptDialog(String GroupID) {

    ??? proname = GroupID;

    ??? try {

    ????? jbInit();

    ????? pack();

    ??? }

    ??? catch (Exception ex) {

    ????? ex.printStackTrace();

    ??? }

    ? }

    ? private void jbInit() throws Exception {

    ??? ReportPan.setLayout(borderLayout1);

    ??? getContentPane().add(ReportPan);

    ??? // 裝載報表 , Jbuilder 工程的目錄創建一個 Reports 文件夾,并把報表的 jasper 文件擱置在該文件夾。

    ??? String reportPath = System.getProperty("user.dir") + "\\Reports\\ BugsRpt.jasper";

    ??? JasperReport jasperReport =

    (JasperReport) JRLoader.loadObjectFromLocation(reportPath);

    ??? // 創建數據庫的連接,參考 java JDBC 編程資料創建連接方式

    ??? CommectionDB conndb = new CommectionDB();

    ????// 注意 :這個連接要求與制作報表時使用的連接一致

    ??? Connection conn = conndb.getDbConnection();

    ??? // 報表配置參數,前文提過的 SQL 語句的 Where 條件參數就是與這里對應。
    ?
    // 條件的值可能是通過多種方式得到的,比如上一個頁面傳遞過來的

    ??? Map parameters = new HashMap();???

    ????//ProjectName 就是 iReport 的變量 $P{ProjectName} 的名稱,參考第一部分的 5.6 添加參數和使用參
    proname 就是從界面上獲取的值。

    ?parameters.put("ProjectName ", proname);??

    ?JasperPrint jasperPrint =

    ?????????? JasperFillManager.fillReport(

    ?????????? jasperReport,

    ?????????? parameters,

    ?????????? conn

    ??? );

    ?? // 裝載過程,注意其中的紅體字部分

    ? ?jrview = new dori.jasper.view.JRViewer(jasperPrint);

    ?? ReportPan.setLayout(borderLayout1);

    ?? ReportPan.setPreferredSize(new Dimension(800, 600));

    ?? getContentPane().add(ReportPan, BorderLayout.CENTER);

    ?? ReportPan.add(jrview,null);

    ? }

    }

    到這里,所有需要設置和編程的工作基本完成了。

    3、

    運行

    確定數據庫已經啟動了,在 JBuilder 運行應用程序。在 TextBox 輸入有意義的組值,比如“ BugWin 系統”,這是我的測試值,實際情況是根據你的需要來確定的。單擊 Button ,系統會彈出對話框,運行結果和第一部分 6.2 、預覽報表結果一致。

    4、

    總結

    隨著技術的進步,應用環境的不斷變化,胖客戶端的應用可能會逐漸退出主流,但是它的存在是必要的。所以我要寫胖客戶端的應用方面的報表使用技術。文中簡要明了的介紹了如何使用 Jasperreport 編程報表程序。希望對你有一點幫助。

    posted on 2006-12-17 10:31 放水老倌 閱讀(674) 評論(0)  編輯  收藏 所屬分類: 打印報表
    主站蜘蛛池模板: 精品一区二区三区免费毛片| 美女隐私免费视频看| 欧美日韩国产免费一区二区三区| 亚洲综合久久一本伊伊区| 四色在线精品免费观看| 亚洲人成网站在线在线观看| 猫咪免费人成网站在线观看| 亚洲av日韩aⅴ无码色老头| 午夜国产羞羞视频免费网站| 无人视频在线观看免费播放影院 | 两性刺激生活片免费视频| 久久综合亚洲色HEZYO社区| 国产午夜无码精品免费看动漫| 亚洲成AV人片在线播放无码| 日韩人妻无码精品久久免费一| 亚洲国产精品国自产拍电影| 91免费人成网站在线观看18| 中文字幕乱码亚洲精品一区| 在线免费观看中文字幕| 免费无码午夜福利片 | 国产精品亚洲综合专区片高清久久久| 三年片免费高清版| 亚洲日韩中文字幕| 免费国产成人午夜在线观看| 亚洲人成在线精品| 午夜国产羞羞视频免费网站| 久久免费看少妇高潮V片特黄| 中国china体内裑精亚洲日本| 亚洲视频人成在线播放| 18禁成人网站免费观看| 久久久久亚洲AV无码去区首| 亚洲精品亚洲人成人网| 成人免费毛片内射美女APP| 一级毛片无遮挡免费全部| 亚洲福利一区二区| 亚洲第一黄片大全| 成人影片麻豆国产影片免费观看| XXX2高清在线观看免费视频| 亚洲欧美国产国产综合一区| 久久亚洲国产中v天仙www| 日日夜夜精品免费视频|