日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

ireport java 变量_iReport —— 使用 JavaBean 作为数据源

發(fā)布時(shí)間:2023/12/18 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ireport java 变量_iReport —— 使用 JavaBean 作为数据源 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在制作報(bào)表時(shí),想直接使用Java代碼提供數(shù)據(jù)。

網(wǎng)上找了一些文章,很多都是用Servlet做的。我不是想通過(guò)瀏覽器來(lái)觀(guān)察它的輸出。我想使用iReport的動(dòng)態(tài)連接直接預(yù)覽。

結(jié)合一些資料,加上自己的摸索終于成功了。

現(xiàn)整理如下:

需要的環(huán)境

JDK?+?iReport?+?Eclipse?+?PDF?Reader

如果Eclipse沒(méi)有的話(huà)也沒(méi)關(guān)系,iReport需要的只是Java文件編譯后的class文件。

Java部分(Eclipse)

1、JavaBean

一個(gè)簡(jiǎn)單 JavaBean —— Student。

1 packageds.javabean;2 /**

3 *4 *5 *@authorby Young.ZHU6 * on 2012-8-37 *8 * Package&FileName: ds.javabean.Student9 */

10 public classStudent {11 //~ Instance fields ********************************************************12 //序號(hào)

13 private intid;14 //姓名

15 privateString name;16 //性別

17 privateString gender;18 //出生年月

19 privateString birthday;20

21 //~ Constructors ***********************************************************

22 publicStudent() {23 }24 public Student(intid, String name, String gender, String birthday) {25 this.id =id;26 this.name =name;27 this.gender =gender;28 this.birthday =birthday;29 }30

31 //~ Methods ****************************************************************

32 public intgetId() {33 returnid;34 }35 public void setId(intid) {36 this.id =id;37 }38

39 publicString getName() {40 returnname;41 }42 public voidsetName(String name) {43 this.name =name;44 }45

46 publicString getGender() {47 returngender;48 }49 public voidsetGender(String gender) {50 this.gender =gender;51 }52

53 publicString getBirthday() {54 returnbirthday;55 }56 public voidsetBirthday(String birthday) {57 this.birthday =birthday;58 }59 }

2、Factory

iReport在使用JavaBean作為數(shù)據(jù)源時(shí)需要一個(gè)Factory。主要用來(lái)生成報(bào)表數(shù)據(jù)。

1 packageds.javabean;2

3 importjava.util.ArrayList;4 importjava.util.Collection;5

6 /**

7 * 生成JavaBean的工廠(chǎng)類(lèi)。8 * 在iReport的DataSource的配置中會(huì)用到。9 *10 *@authorby Young.ZHU11 * on 2012-8-312 *13 * Package&FileName: ds.javabean.StudentFactory14 */

15 public classStudentFactory {16 //~ Static fields/initializers *********************************************17

18 //生成實(shí)體對(duì)象的個(gè)數(shù)

19 private static final int RECORD_COUNT = 100;20

21 //~ Methods ****************************************************************

22

23 /**

24 * 這個(gè)方法在iReport的DataResource配置時(shí)也會(huì)用到25 * 必須是靜態(tài)方法 static26 *27 *@return

28 */

29 public static CollectioncreateBeanCollection() {30 Collection beanCollection = new ArrayList();31

32 for (int i = 0; i < RECORD_COUNT; i++) {33 beanCollection.add(StudentUtil.createStudent(i + 1));34 }35

36 returnbeanCollection;37 }38 }

3、Student的工具類(lèi)

該類(lèi)用來(lái)產(chǎn)生Student實(shí)例。主要是為了報(bào)表的數(shù)據(jù)不那么單調(diào)。

1 packageds.javabean;2

3 importjava.text.DateFormat;4 importjava.text.SimpleDateFormat;5

6 importjava.util.Date;7 importjava.util.Random;8

9

10 /**

11 * 隨機(jī)生成Student實(shí)體對(duì)象的工具類(lèi)12 *13 *@authorby Young.ZHU14 * on 2012-8-315 *16 * Package&FileName: ds.javabean.StudentUtil17 */

18 public classStudentUtil {19 //~ Static fields/initializers *********************************************

20

21 /*

22 * “姓”的字符數(shù)組23 */

24 private static String[] FIRST_NAME_ARR ={25 "趙",26 "錢(qián)",27 "孫",28 "李",29 "王",30 "張",31 "慕容",32 "上官",33 "東方",34 "朱"

35 };36

37 /*

38 * 其他中文數(shù)組39 */

40 private static String[] LAST_NAME_ARR ={41 "燕",42 "巖",43 "艷",44 "明",45 "建國(guó)",46 "小剛",47 "小娟",48 "華",49 "天明",50 "洋",51 "盈盈",52 "仁"

53 };54

55 /*

56 * 性別57 */

58 private static String[] GENDER_ARR ={59 "男",60 "女"

61 };62 private static DateFormat DATE_FORMATER = newSimpleDateFormat(63 "yyyy年MM月dd日");64

65 //~ Methods ****************************************************************

66

67 public static Student createStudent(intid) {68 String firstName =getRandomCharFromArray(FIRST_NAME_ARR);69 String lastName =getRandomCharFromArray(LAST_NAME_ARR);70 String name = firstName +lastName;71

72 String gender = GENDER_ARR[new Random().nextInt(1000) % 2];73

74 String birthday =getRandomDate();75

76 return newStudent(id, name, gender, birthday);77 }78

79

80 private staticString getRandomCharFromArray(String[] arr) {81 Random random = newRandom();82 int index =random.nextInt(arr.length);83

84 returnarr[index];85 }86

87 /**

88 * 隨機(jī)生成一個(gè)比當(dāng)前日期小的日期89 *90 *@return(yyyy年MM月dd日)91 */

92 private staticString getRandomDate() {93 Date date = newDate();94 long dateMill =date.getTime();95

96 Random random = newRandom();97 dateMill = (long) (random.nextDouble() *dateMill);98

99 return DATE_FORMATER.format(newDate(dateMill));100 }101 }

報(bào)表設(shè)計(jì)(iReport)

報(bào)表的設(shè)計(jì)部分就不多說(shuō)了。

主要說(shuō)一下,如何使用Java類(lèi)向報(bào)表中傳數(shù)據(jù)。

1、設(shè)置classpath

iReport使用JavaBean時(shí)使用的是Java的class文件。所以需要制定classpath,讓iReport知道到哪去找那些class文件。

工具欄?>?Options?>?Classpath(如果iReport是英文版本,請(qǐng)自己對(duì)照),出現(xiàn)下圖的界面。

a、點(diǎn)擊添加文件夾,找到上面提到的幾個(gè)Java類(lèi)的class文件的路徑。筆者使用的是Eclipse,而且建的是Java?Project,所以筆者的路徑是?$workspace\$projectName\bin?。

b、點(diǎn)擊Save?Classpath。

(注:設(shè)置完成后,請(qǐng)重啟iReport。有時(shí)在視圖上的修改不能及時(shí)顯示,可以多試幾次。還是顯示不出來(lái),重啟吧!不知道是不是iReport的bug。筆者使用的版本是2.0.1)

2、設(shè)置數(shù)據(jù)源

工具欄?>?Data?>?連接/資料來(lái)源。

在彈出的界面中,點(diǎn)擊New按鈕。

在接下來(lái)彈出的界面中,選中JavaBeans?set?data?source,點(diǎn)擊Next。

出現(xiàn)如下圖的界面。

a、Name,給你的datasource取個(gè)名字,例如:MyJavaBeanTest

b、Factory?class,就是上面的工廠(chǎng)類(lèi),包括包名和Java文件名

c、method,工廠(chǎng)類(lèi)里的那個(gè)靜態(tài)方法。注意方法名要對(duì)應(yīng)。名字可以任取。

3、向報(bào)表填充值

工具欄?>?Data?>?報(bào)表查詢(xún),出現(xiàn)如下界面。

a、選中JavaBean?Data?Source選項(xiàng)卡。

b、在Class?name欄里,填入JavaBean類(lèi),包括包名和Java文件名。

c、點(diǎn)擊Read?attributes。可以看到下面的欄里顯示出了JavaBean的屬性。

d、選中相關(guān)屬性,點(diǎn)擊Add?Selected?Field(s)。

e、點(diǎn)擊OK。

經(jīng)歷過(guò)上面的步驟,可以看到在你的報(bào)表文件的視圖中,Fields欄里多了剛剛加上的屬性。

將各屬性拖放到相應(yīng)的位置。如圖。

好了。看看效果吧!

在菜單欄里,點(diǎn)擊執(zhí)行報(bào)表(使用動(dòng)態(tài)連結(jié)),如圖。

如果配置了多個(gè)數(shù)據(jù)源的話(huà),請(qǐng)注意動(dòng)態(tài)連結(jié)的數(shù)據(jù)源是否正確。

預(yù)覽效果如下:

P.S. 其中的Java源代碼和iReport的報(bào)表文件(jrxml)已打包上傳到網(wǎng)上。有興趣的可以看看。

總結(jié)

以上是生活随笔為你收集整理的ireport java 变量_iReport —— 使用 JavaBean 作为数据源的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。