按兩次
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
編程報表程序。希望對你有一點幫助。