A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马---邢志伟 初级黑马   /  2012-6-19 21:02  /  1758 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java应用程序可以调用打印功能中的PrinterJob类中的方法实现那些主要任务,有点不太理解。。大家帮忙详细讲解一下。。。求助!!!:)

2 个回复

正序浏览
在PringJob类中,定义了很多的方法,如设置打印任务名称、设置打印页面、追踪打印状态等等。所以作为Java程序开发人员是一件很开心的事情。因为在开发打印功能的时候,基本上只需要直接引用类中的方法即可,而很少需要重新开发新的功能。
  当有多个文档在打印的时候,在打印窗口可以看到有多个待打印的文档在排队。这是通过setJobName方法来实现的。PrinterJob类可以调用访问打印任务名称的属性,这个属性就是现实在打印任务列表中的相关打印任务。在这个类中,设置打印任务主要是通过setJobName方法来实现的。这个方法会接收String类型的字符串作为其参数,然后会利用这个参数的值作为打印任务的名称。不过这个方法只是在打印窗口中显示打印的名称,那么这个打印的名称到底是什么呢?此时就需要用到另外一个方法 getJobName方法。如使用String printname=pjop.getJopName()语句,来获得打印的名称。当调用这个方法时,会返回一个字符串类型的值,它就是打印窗口中显示的打印名称。利用这个方法获得这个打印名称的值之后,再将其传递给setJobName方法,就可以让打印窗口显示打印的名称了。所以,这两个方法,一是获取打印的名子,二是将打印的方法显示在打印窗口中,他们往往是同时出现的,相互配合实现这一组功能。这里需要注意的是,在使用getJopName()成员方法获得打印任务的名称时,一般情况下就显示打印文档的名子。但是如果用户有特殊的要求,如在一些共享打印服务器或者网络打印服务器中,除了要显示打印文档的名字,还需要现实打印着的电脑名字或者IP地址的话,那么需要对这个方法进行适当的调整。让其不仅要取得打印文件的名字,同时要获得打印者的主机名字或者IP地址。
  在这个类中,还有一个现成的控制打印状态的方法。用户在打印的过程中,如果发现某个需要打印的文件不是其要打印的。或者网络管理员发现网络打印机任务比较繁忙,要取消一些在队列中等待的图片文件的打印作业时,就需要用到这个方法。打印控制器允许用户如果打印作业正在进行中或者出于队列等待中,可以控制取消下一次打印作业。这主要是利用这个PrintJob类的isCancelled方法来实现的。这个方法会返回布尔类型的值,即true或者false。其中前者表示打印被取消了,后者表示打印没有被取消。这个对应关系不要搞错,否则的话,就可能会得到相反的结果。要取得打印状态,可以通过如下的语句来获得:boolean pcancel=pjob.isCancelled()。从这个语法中可以看到这个方法返回的是一个boolean类型的值。程序开发人员就可以通过这个方法的返回值来判断当前打印程序的执行状态。有时候这个方法很重要。如为了缩短用户打印的等待时间,会对某个网络打印机的等待数量进行限制。如只允许有50个文档等待打印,那么就需要用到这个方法。先利用这个方法来判断当前队列中有效的打印作业,然后对其进行统计。如果统计出来的结果已经等于上限值的话,就会禁止用户添加新的打印作业。直到这个数量小于上限值才会恢复正常。


回复 使用道具 举报
Java的打印API主要存在于java.awt.print包中。
而jdk1.4新增的类则主要存在于javax.print包及其相应的子包javax.print.event和javax.print.attribute中。
其中javax.print包中主要包含打印服务的相关类,而javax.print.event则包含打印事件的相关定义,javax.print.attribute则包括打印服务的可用属性列表等。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马