欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Java打印程序设计.docx

    • 资源ID:1394217       资源大小:24.99KB        全文页数:10页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java打印程序设计.docx

    Java打印程序设计1 MeF在我的的实际I:作中,常常须要实现打印功健.但由于历史缘由,JaVa供应的打印功能始终都比拟弱.事实上般初的Jdk根本不支持打印,宜到MkI.1才引入了很轻欧的打印支持.所以.在以前用Java/AppleVJSP/SerVtet设计的程序中,较困难的打印都是通过调用ACUVeXQCX控件或者VBNC程序来实现的,特别麻烦,事实上,SUN公司也始终致力于JaVa打卬功能的完善,而Java2平台那么用绻行r一个强他的打印模式的开端,该打印模式以Java2D图形包充分结合成体,更令人蚁招的是,新发布的jdk1.4那么供应了套完整的“Java打印效劳APr(JaVaPrintSerViCeAPI),它对已有的打印功能是主动的补充.利用它,我们可以实现大局部实际应用再求,包括打印文字、图形、文件及打印预览等等。本文将通过一个详细的程序实例率说明如何设计JaVa打印程序以实现这些功能.并对不同版本的实现方法进展分析比拟.吊电大家能从中获得一些有益的提示.2 Java中的打印2.1 Java的打印APlJava的打印API主要存在包中.而jdk1.4新增的类那么主要在在于javax.print包及其相应的子包和中.共中Javaxpnnt包中主要包含打FlJ效劳的相关类,而那么包含打印事务的相关定义.那么包括打印效劳的可用解性列表等.22如何实现打印要产生个打印,至少很要考虑两条:殖吃个打印效劳对象.这可通过三种方式实现I在Wkl.4之前的版本,必须要坡现接1.l或潮过TOOh1.getDefaUltToOlkiH).gelPnnUob来茨将打印效劳对象:在jdk1.4中那么可以通过来ft找定位个打印效劳时型.须要开场一个打卬工作.这也有儿种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob(jdk1.1供应的,现在1.l经很少用Tj调用Print或PrintAll方法开场打印工作:也可以通过的PrintDiaIOg显示打印对话框.然后通过Pdnl方法开场打印:在jdk1.4中那么可以通过的PnntDiaIog显示打印对话框,然后谡用Pnnt疗法开场个打印工作.2.3打印机对话柢Printable的打印对话框开场打印工作之前,可以通过PrinterJobprintDiaIog来显示一个打印对话框,它给用户一个时机以选择应当打印的页码范用,弁可供用户变更打印设置.它是一个本地对话框.于实上,当从一个PrintabIe对象进展一个打印工作时,打卬对象并不知道须要打印多少页.它只是不停地商用print方法,只要Prin方法返回Printable.PAGE-E×ISTS值.打印工作就不停地产生打印页,直到Pnnl方法返回PnntabIe.NO_SUCH_PAGE时.打印I:作才停侬.由于打印工作只有在打印完成后才进屣精确的页数计鸵,所以在对话框上的页码范国是尚未初始化的1,9999我仃可以通过构建个对望传递给打印对敞:也可以通过指定的格式让仇须要打印的页数并传递给打印对象使其精确地知道要打印多少页.2 3.2ServiceUI的打印对话框与Printable的对话极不同的是,.jdk1.4供应ServiceUI的打印机对话板的然省行为已经用新的API更改了:籍有状况下对话框不显示,我归必需运用ServiceUI类调用PrintDiaJog方法创立如卜,所示的打印对话框.3 JaVa打印程序设计实例3.1 打卬文本3.1.1 应用场景假设我们须要打印个窗体的某个文本编辑域(可能只有几行,也可能包含多页)的内容,并且俗页公多打卬54行,如何实现嗯?312诉决方法根木思路如下:首先我们须要实现PrintabIe接口,然后依据彩页G多54行的格式计。共须要打印多少页,当打印文本的按钿被点击时,执行相应的打FlJ动作.打印文本的详细操作可通过Graphics2D的drawString方法来实现.1.实HePrintabIe接1.JrGraphic指明打印的图形环境:PageFormat指明打印页格熄页面大小以点为计量单位,1点为1英寸的1/72,1英寸为25.4亳米,A4尔大致为595×842点):page指明页号Vpublicintprint(Grapicsg,PageFormatpf.intpage)throwsPrinterExceptionGrapics2Dg2=(Graphics2D)g;g2.setPaint(Colorblack);"设置打印色为黑色if(page>=PAGES)当打印页号大于须瞿打印的总页数时,打印工作完毕returnPrintable.NO_SUCH_PAGE;g2.tra11slate(pf.getlmageableX(),PtgetlmageabIeY();转换坐标.瑜定打印边界drawCuentPageTe×t(g2.pf.Page打印当前页文本returnPrintable.PAGE_EXISTS;存在打卬页时,接着打印工作)广打印指定页号的详细文本内容/privatevoiddrawCurrentPageTe×t(Graphics2Dg2.PageFormatpf,intpage)Strings=getDrawText(prinlSlr)pagM:狭得苜前页的待打印文本内容狭得默认字体及相应的尺寸FontRenderContextntext=g2.getFontRenderConteXt();Fontf=area,getFont();StringdrawText;floatascent=16:给定字符点阵intk,i=f.getSize()1lines=0;while(s.ength()>0&&lines<54)何页限定在54行以内(k=SjndeXOfon,);获得每个回车符的位置if(k!=-1)存在回车符(lines+=1;"计见行数drawTxt=s.subslrir>g(O.k):狭尔班行文本g2.drawString(drawTe×t.O.ascent);详细打印板一行文木.同时走纸移位if(SSUbString(k+1),length()>0)s=s.substring(k1);敌取尚未打印的文本ascent+=i;else不存在回车符(lines+=1;"计犯行数drawTe×t=s;获得征行文本g2.drawStrig(drawTextO.agent);详细打印每一行文本.同时走纸移位s=-;文本己完毕)广将打卬目标文木按页存放为字符率publicStringgetDrawTe×t(Strings)(Stnng(drawText=newStringPAGES;依抠页数初始化数组for(inti=0;i<PAGES;i+)drawTexti=数组元素初始化为空字符小intk.suffix=0,lines=0;while(s.legth()>0)(if(lines<54)"不锣,页时(k=s.indexf('n');if(k!=1)"存在回车符(lines+=1;行数取加计算该页的详细文本内容,存放到相应下标的数组元素drawTe×t(suffi×=drawTextsfxs.substring(O,k÷1);if(s.substring(k+1).length()>O)s=s.substring(k+1);)else(lines+=1;/行数我加“格文本内容存放到相应的数加元素drawTe×t(suffi×=drawTextsuffixs;s=":)else己淌-JiiBj(lines=0;行数统计清零SUffiX+;故抓下标加1)returndrawText;2,计算须要打印的总页数publicintgetPagesCont(StringcurStr)(intpage=0;intposition,count=0;Stringstr=curStr;w网StrIengthO>0)“文本尚未计算完毕(position=str.indexf('n');计同乍符的位置count=1;统计行数if(positionI=-1)str=slr.substring(postion+1);截取尚未计算的文本elsestr=”;文木己计尊完毕)if(ut>0)page=count/54+1;"以总行数除以54获得总页数returnpage;返同管打印的总页数3.1、 以jdk1.4以前的版本实现打印动作按钿监听.并完成详细的打印操作privatevoidprintTextAction()PrintStr=area.ge11xt().lnm():获得双要fjFIJ的11标文本if(printStr=null&&pnntStr.lenglh()>O)当打FlJ内容不为空时(PAGES=getPagesCont(printStrj;获得打卬总页数PnnterJobmyPrUob=P11nterJob.gtPnntrJob();我得默认打印作业PageFormatPageFOrmal=myPrtJob.defaultPage();茨得以认打印页面格式myPrtJobsetPrintable(this,pageFormat);"设翼打El)工作if(myPrUob.printDDtog()显示打印对话框(trymyPrtJob.print();进展捋页的详细打印操作)CatCh(PrinterEXCePtiOnpe)p.pnntStackTrac();)else假如打印内容为空时,提示用户打印将取消JOptionPane.showConfirmDialog(null,"Sorry,PrinterJobisEmpty,PrintCancelled!","Empt/.JoPtiOnPaneQEFAU1.T_OPTION,JOPtionPane.WARNING.MESSAGE);)3.2、 以JdkI.4新版本供应的APl实现打印动作按钮监听.并完成详细的打FlJ悚作privatevoidprintText2Action()PrintFIag=0:打印标记清零PrintStr=area.ge11xl().trim()力获得次要打印的目标文本if(printStr!=null&&pri11tStr.le11gth()>0)当打印内容不为空时(PAGES=getPagesCont(printStr):获得打卬总页数指定打印输出格式DocFIavorflavor=DocFlavorSERVICE-FORMATTED-PRlNTAB1.E;“定位默认的打卬效劳PrintServiceprintservice=PrintSerViCe1.OokUPjoOkUPDefaUitPrintSerViCe();创立打印作业DocPrintJobjob=prin(Service.createPrinUob);设跟打卬磁性PrintReqUestAttributeSetpras=newHashRrintRequestAttributeSetO;DocAttributeS

    注意事项

    本文(Java打印程序设计.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开