- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA的打印机制
Java 自从问世以来在各方面发展迅速,但是一直以来,打印输出是java最弱的方面。事实上,java1.0不支持任何打印功能。Java1.1在 java.awt包里包含了一个叫做PrintJob的类,但是这个类提供的打印功能十分粗糙和不可靠。当java1.2问世,它围绕 PrinterJob设计了一个完整独立的打印机制(叫做java2D printing API),并且在java.awt.print包里定义了一些新的类和接口。这些使得基于PrintJob打印机制(就是AWT printing)基本荒废,虽然PrintJob从未被抨击而且至少在这篇文章里仍然是一个提供技术的类。
在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java提供的打印功能一直都比较弱。实际上最初的jdk根本不支持打印,直到jdk1.1 才引入了很轻量的打印支持。所以,在以前用Java/Applet/JSP/Servlet设计的程序中,较复杂的打印都是通过调用 ActiveX/OCX控件或者VB/VC程序来实现的,非常麻烦。实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了 一个健壮的打印模式的开端,该打印模式与Java2D图形包充分结合成一体。更令人鼓舞的是,新发布的jdk1.4则提供了一套完整的Java?打印服 务?API?(Java?Print?Service?API),它对已有的打印功能是积极的补充。利用它,我们可以实现大部分实际应用需求,包括打印 文字、图形、文件及打印预览等等。本文将通过一个具体的程序实例来说明如何设计Java打印程序以实现这些功能,并对不同版本的实现方法进行分析比较,希 望大家能从中获取一些有益的提示。
9.1?Java的打印API
Java的打印API主要存在于java.awt.print包中。而jdk1.4新增的类则主要存在于javax.print包及其相应的子包 javax.print.event和javax.print.attribute中。其中javax.print包中主要包含打印服务的相关类,而 javax.print.event则包含打印事件的相关定义,javax.print.attribute则包括打印服务的可用属性列表等。
9.2?如何实现打印
要产生一个打印,至少需要考虑两条:需要一个打印服务对象。这可通过三种方式实现:在jdk1.4之前的版本,必须要实现java.awt.print.Printable接口或通过 Toolkit.getDefaultToolkit().getPrintJob来获取打印服务对象;在jdk1.4中则还可以通过 javax.print.PrintSerivceLookup来查找定位一个打印服务对象。?需要开始一个打印工作。这也有几种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob(jdk1.1提供的,现在已经 很少用了)调用print或printAll方法开始打印工作;也可以通过java.awt.print.PrinterJob的printDialog 显示打印对话框,然后通过print方法开始打印;在jdk1.4中则可以通过javax.print.ServiceUI的printDialog显示 打印对话框,然后调用print方法开始一个打印工作。?
9.3?打印机对话框
9.3.1?Printable的打印对话框
开始打印工作之前,可以通过PrinterJob.printDialog来显示一个打印对话框。它给用户一个机会以选择应该打印的页码范围,并可供用户改变打印设置。它是一个本地对话框。事实上,当从一个Printable对象进行一个打印工作时,打印对象并不知道需要打印多少页。它只是不停地调用print方法。只要print方法返回 Printable.PAGE_EXISTS值,打印工作就不停地产生打印页,直到print方法返回Printable.NO_SUCH_PAGE时, 打印工作才停止。由于打印工作只有在打印完成后才进行准确的页数计算,所以在对话框上的页码范围是尚未初始化的[1,9999]。我们可以通过构建一个 java.awt.print.Book对象传递给打印对象;也可以通过指定的格式计算需要打印的页数并传递给打印对象,使其准确地知道要打印多少页。
9.3.2?ServiceUI的打印对话框
与Printable的对话框不同的是,在jdk1.4提供ServiceUI的打印机对话框的缺省行为已经用新的?API?更改了:缺省情况下对话框不 显示。我们必须使用ServiceUI类调用printDialog方法创建如下所示的打印对话框。
9.4 J
您可能关注的文档
- JVM GC管理与调优(3).doc
- Ribbon 和 Eureka 集成——维信科技.doc
- NOIP2008 普与组初赛题目.doc
- Linux必学60个命令(2)-文件处理.doc
- kmplayer忠实爱好者一些使用技巧.doc
- 2008[1]1225断句翻译一百篇(1—87)文库.doc
- 2008~2009学年(上)七年级语文期末复习题[1].doc
- HD系列机型中图片显示原理与应用.doc
- HEF4752在三相SPWM变频调速系统中应用.doc
- 2008高考数学天津卷 带答案解析.doc
- 难点详解鲁教版(五四制)6年级数学下册期末测试卷带答案详解(考试直接用).docx
- 难点详解鲁教版(五四制)6年级数学下册期末试题【培优】附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题及完整答案详解(全国通用).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(名师系列).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解【全国通用】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(突破训练)附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(能力提升)附答案详解.docx
- 难点详解京改版数学9年级上册期中试卷附参考答案详解【突破训练】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(有一套).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷带答案详解(夺分金卷).docx
最近下载
- 实习安全教育主题班会.pptx VIP
- 热点03 粮食安全,乡村振兴(课件)-2024年高考历史热点追踪命题预测.pptx VIP
- 2025年-二级建造师-机电工程实务与管理.docx VIP
- 人工智能在能源行业中的应用.pptx VIP
- PICC专科护士进修学习汇报.pptx VIP
- 绵阳燃气招聘面试题型及答案.pdf
- 体例格式12:工学一体化课程《小型网络安装与调试》任务2教学单元2教学单元活动方案.docx VIP
- GB 50149-2010 电气装置安装工程母线装置施工及验收规范.docx
- 中国人身保险业重大疾病经验发生率表(2020).docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务2教学单元4教学单元活动方案.docx VIP
文档评论(0)