publicclassPrintPreviewDialogextendsJDialogimplementsActionListener{ /** * */ privatestaticfinallongserialVersionUID=-7320342468005550954L; privateJButtonnextButton=newJButton("Next"); privateJButtonpreviousButton=newJButton("Previous"); privateJButtoncloseButton=newJButton("Close"); privateJPanelbuttonPanel=newJPanel(); privatePreviewCanvascanvas; publicPrintPreviewDialog(Frameparent,Stringtitle,booleanmodal, PrintTestpt,Stringstr){ super(parent,title,modal); canvas=newPreviewCanvas(pt,str); setLayout(); } privatevoidsetLayout(){ this.getContentPane().setLayout(newBorderLayout()); this.getContentPane().add(canvas,BorderLayout.CENTER); nextButton.setMnemonic('N'); nextButton.addActionListener(this); buttonPanel.add(nextButton); previousButton.setMnemonic('N'); previousButton.addActionListener(this); buttonPanel.add(previousButton); closeButton.setMnemonic('N'); closeButton.addActionListener(this); buttonPanel.add(closeButton); this.getContentPane().add(buttonPanel,BorderLayout.SOUTH); this.setBounds((int)((SystemProperties.SCREEN_WIDTH-400)/2), (int)((SystemProperties.SCREEN_HEIGHT-400)/2),400,400); } publicvoidactionPerformed(ActionEventevt){ Objectsrc=evt.getSource(); if(src==nextButton) nextAction(); elseif(src==previousButton) previousAction(); elseif(src==closeButton) closeAction(); } privatevoidcloseAction(){ this.setVisible(false); this.dispose(); } privatevoidnextAction(){ canvas.viewPage(1); } privatevoidpreviousAction(){ canvas.viewPage(-1); } classPreviewCanvasextendsJPanel{ privateStringprintStr; privateintcurrentPage=0; privatePrintTestpreview; publicPreviewCanvas(PrintTestpt,Stringstr){ printStr=str; preview=pt; } publicvoidpaintComponent(Graphicsg){ super.paintComponent(g); Graphics2Dg2=(Graphics2D)g; PageFormatpf=PrinterJob.getPrinterJob().defaultPage(); doublexoff; doubleyoff; doublescale; doublepx=pf.getWidth(); doublepy=pf.getHeight(); doublesx=getWidth()-1; doublesy=getHeight()-1; if(px/py
?publicclassPrintTestextendsJFrameimplementsActionListener,Printable{ /** * */ privatestaticfinallongserialVersionUID=-1898922341899485331L; privateJButtonprintTextButton=newJButton("PrintText"); privateJButtonpreviewButton=newJButton("PrintPreview"); privateJButtonprintText2Button=newJButton("PrintText2"); privateJButtonprintFileButton=newJButton("PrintFile"); privateJButtonprintFrameButton=newJButton("PrintFrame"); privateJButtonexitButton=newJButton("Exit"); privateJLabeltipLabel=newJLabel(""); privateJTextAreaarea=newJTextArea(); privateJScrollPanescroll=newJScrollPane(area); privateJPanelbuttonPanel=newJPanel(); privateintPAGES=0; privateStringprintStr; publicPrintTest(){ this.setTitle("PrintTest"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setBounds((int)((SystemProperties.SCREEN_WIDTH-800)/2), (int)((SystemProperties.SCREEN_HEIGHT-600)/2),800,600); initLayout(); } privatevoidinitLayout(){ this.getContentPane().setLayout(newBorderLayout()); this.getContentPane().add(scroll,BorderLayout.CENTER); printTextButton.setMnemonic('P'); printTextButton.addActionListener(this); buttonPanel.add(printTextButton); previewButton.setMnemonic('v'); previewButton.addActionListener(this); buttonPanel.add(previewButton); printText2Button.setMnemonic('e'); printText2Button.addActionListener(this); buttonPanel.add(printText2Button); printFileButton.setMnemonic('i'); printFileButton.addActionListener(this); buttonPanel.add(printFileButton); printFrameButton.setMnemonic('F'); printFrameButton.addActionListener(this); buttonPanel.add(printFrameButton); exitButton.setMnemonic('x'); exitButton.addActionListener(this); buttonPanel.add(exitButton); this.getContentPane().add(buttonPanel,BorderLayout.SOUTH); } publicvoidactionPerformed(ActionEventevt){ Objectsrc=evt.getSource(); if(src==printTextButton){ printTextAction(); }elseif(src==previewButton){ previewAction(); }elseif(src==printText2Button){ printText2Action(); }elseif(src==printFileButton){ printFileAction(); }elseif(src==printFrameButton){ printFrameAction(); }elseif(src==exitButton){ exitApp(); } } publicintprint(Graphicsg,PageFormatpf,intpage) throwsPrinterException{ Graphics2Dg2=(Graphics2D)g; g2.setPaint(Color.black); if(page>=PAGES){ returnPrintable.NO_SUCH_PAGE; } g2.translate(pf.getImageableX(),pf.getImageableY()); drawCurrentPageText(g2,pf,page); returnPrintable.PAGE_EXISTS; } privatevoiddrawCurrentPageText(Graphics2Dg2,PageFormatpf,intpage){ Fontf=area.getFont(); Strings=getDrawText(printStr)[page]; StringdrawText; floatascent=16; intk,i=f.getSize(),lines=0; while(s.length()>0&&lines<54){ k=s.indexOf('\n'); if(k!=-1){ lines+=1; drawText=s.substring(0,k); g2.drawString(drawText,0,ascent); if(s.substring(k+1).length()>0){ s=s.substring(k+1); ascent+=i; } }else{ lines+=1; drawText=s; g2.drawString(drawText,0,ascent); s=""; } } } publicString[]getDrawText(Strings){ String[]drawText=newString[PAGES]; for(inti=0;i0){ if(lines<54){ k=s.indexOf('\n'); if(k!=-1){ lines+=1; drawText[suffix]=drawText[suffix]+s.substring(0,k+1); if(s.substring(k+1).length()>0){ s=s.substring(k+1); } }else{ lines+=1; drawText[suffix]=drawText[suffix]+s; s=""; } }else{ lines=0; suffix++; } } returndrawText; } publicintgetPagesCount(StringcurStr){ intpage=0; intposition,count=0; Stringstr=curStr; while(str.length()>0){ position=str.indexOf('\n'); count+=1; if(position!=-1){ str=str.substring(position+1); }else{ str=""; } } if(count>0){ page=count/54+1; } returnpage; } privatevoidprintTextAction(){ printStr=area.getText().trim(); if(printStr!=null&&printStr.length()>0){ PAGES=getPagesCount(printStr); PrinterJobmyPrtJob=PrinterJob.getPrinterJob(); PageFormatpageFormat=myPrtJob.defaultPage(); myPrtJob.setPrintable(this,pageFormat); if(myPrtJob.printDialog()){ try{ myPrtJob.print(); }catch(PrinterExceptionpe){ pe.printStackTrace(); } } }else{ JOptionPane.showConfirmDialog(null, "Sorry,PrinterJobisEmpty,PrintCancelled!","Empty", JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE); } } privatevoidpreviewAction(){ printStr=area.getText().trim(); PAGES=getPagesCount(printStr); newPrintPreviewDialog(this,"PrintPreview",true,this,printStr) .setVisible(true); } privatevoidprintText2Action(){ printStr=area.getText().trim(); if(printStr!=null&&printStr.length()>0){ PAGES=getPagesCount(printStr); DocFlavorflavor=DocFlavor.SERVICE_FORMATTED.PRINTABLE; PrintServiceprintService=PrintServiceLookup .lookupDefaultPrintService(); DocPrintJobjob=printService.createPrintJob(); PrintRequestAttributeSetpras=newHashPrintRequestAttributeSet(); DocAttributeSetdas=newHashDocAttributeSet(); Docdoc=newSimpleDoc(this,flavor,das); try{ job.print(doc,pras); }catch(PrintExceptionpe){ pe.printStackTrace(); } }else{ JOptionPane.showConfirmDialog(null, "Sorry,PrinterJobisEmpty,PrintCancelled!","Empty", JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE); } } privatevoidprintFileAction(){ JFileChooserfileChooser=newJFileChooser(SystemProperties.USER_DIR); //fileChooser.setFileFilter(newcom.szallcom.file.JavaFilter()); intstate=fileChooser.showOpenDialog(this); if(state==JFileChooser.APPROVE_OPTION){ Filefile=fileChooser.getSelectedFile(); PrintRequestAttributeSetpras=newHashPrintRequestAttributeSet(); DocFlavorflavor=DocFlavor.INPUT_STREAM.AUTOSENSE; PrintServiceprintService[]=PrintServiceLookup .lookupPrintServices(flavor,pras); PrintServicedefaultService=PrintServiceLookup .lookupDefaultPrintService(); PrintServiceservice=ServiceUI.printDialog(null,200,200, printService,defaultService,flavor,pras); if(service!=null){ try{ DocPrintJobjob=service.createPrintJob(); FileInputStreamfis=newFileInputStream(file); DocAttributeSetdas=newHashDocAttributeSet(); Docdoc=newSimpleDoc(fis,flavor,das); job.print(doc,pras); }catch(Exceptione){ e.printStackTrace(); } } } } privatevoidprintFrameAction(){ Toolkitkit=Toolkit.getDefaultToolkit(); Propertiesprops=newProperties(); props.put("awt.print.printer","durango"); props.put("awt.print.numCopies","2"); if(kit!=null){ PrintJobprintJob=kit.getPrintJob(this,"PrintFrame",props); if(printJob!=null){ Graphicspg=printJob.getGraphics(); if(pg!=null){ try{ this.printAll(pg); }finally{ pg.dispose(); } } printJob.end(); } } } privatevoidexitApp(){ this.setVisible(false); this.dispose(); System.exit(0); } publicstaticvoidmain(String[]args){ newPrintTest().setVisible(true); }}?publicfinalclassSystemProperties{ publicstaticfinaldoubleSCREEN_WIDTH=Toolkit.getDefaultToolkit() .getScreenSize().getWidth(); publicstaticfinaldoubleSCREEN_HEIGHT=Toolkit.getDefaultToolkit() .getScreenSize().getHeight(); publicstaticfinalStringUSER_DIR=System.getProperty("user.dir"); publicstaticfinalStringUSER_HOME=System.getProperty("user.home"); publicstaticfinalStringUSER_NAME=System.getProperty("user.name"); publicstaticfinalStringFILE_SEPARATOR=System .getProperty("file.separator"); publicstaticfinalStringLINE_SEPARATOR=System .getProperty("line.separator"); publicstaticfinalStringPATH_SEPARATOR=System .getProperty("path.separator"); publicstaticfinalStringJAVA_HOME=System.getProperty("java.home"); publicstaticfinalStringJAVA_VENDOR=System.getProperty("java.vendor"); publicstaticfinalStringJAVA_VENDOR_URL=System .getProperty("java.vendor.url"); publicstaticfinalStringJAVA_VERSION=System .getProperty("java.version"); publicstaticfinalStringJAVA_CLASS_PATH=System .getProperty("java.class.path"); publicstaticfinalStringJAVA_CLASS_VERSION=System .getProperty("java.class.version"); publicstaticfinalStringOS_NAME=System.getProperty("os.name"); publicstaticfinalStringOS_ARCH=System.getProperty("os.arch"); publicstaticfinalStringOS_VERSION=System.getProperty("os.version"); publicstaticfinalString[]FONT_NAME_LIST=GraphicsEnvironment .getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); publicstaticfinalFont[]FONT_LIST=GraphicsEnvironment .getLocalGraphicsEnvironment().getAllFonts();}?