2016-04-11 37 views
1

Bazı sonuçları java print/printdialog ile dışa aktarmaya çalışıyorum. Çok satırlı yazdırmak istiyorum ("\ n" kullanarak), ancak ihracatım basit bir satırdır. Bu sebebi nasıl çözebilirim? ben bazı çözüm buldu @MadProgrammer ve kodumu güncellemek içinÇok satırlı metin javada printdialog ile nasıl dışa aktarılır?

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.print.PageFormat; 
import java.awt.print.Printable; 
import java.awt.print.PrinterException; 
import java.awt.print.PrinterJob; 

public class PrintableDemo1 implements Printable { 

    public int print(Graphics g, PageFormat pf, int pageIndex) { 


    StringBuilder builder = new StringBuilder(); 
    builder.append("Test Result:").append("\n") 
    .append("First Line").append("\n") 
      .append("Second Line").append("\n") 
      .append("Third Line").append("\n") 
      .append("Fourth Line").append("\n") 
      .append("Last Line"); 


    if (pageIndex != 0) 
     return NO_SUCH_PAGE; 

    Graphics2D g2 = (Graphics2D) g; 
    g2.setFont(new Font("Serif", Font.PLAIN, 12)); 
    g2.setPaint(Color.black); 
    g2.drawString(builder.toString(), 144, 144); 
    return PAGE_EXISTS; 
    } 

    public static void main(String[] args) { 

    PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setPrintable(new PrintableDemo1()); 

    try { 
     pj.print(); 
    } catch (PrinterException e) { 
     e.printStackTrace(); 
    } 

    } 

} 
+0

* * "(\ n ı kullanarak ')' çoklu çizgileri yazdırmak istediğiniz" - Yapamazsın, bu drawString' tek tek – MadProgrammer

+0

[Birden Çizim her çizgi çizmek gerekir, İşler böyle 'bulunuyor Metin satırları] (http://docs.oracle.com/javase/tutorial/2d/text/drawmulstring.html) ihtiyacınız olduğunda daha karmaşık olabilir, ama iyi bir referans;) – MadProgrammer

+0

Eğer gerçekten cesursanız [ İşte bir örnek] (http://stackoverflow.com/questions/14007041/awt-eventqueue-0-java-lang-nullpointerexception/14007091#14007091) – MadProgrammer

cevap

0

Teşekkür:

burada benim kod örneğidir.

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.print.PageFormat; 
import java.awt.print.Printable; 
import java.awt.print.PrinterException; 
import java.awt.print.PrinterJob; 

public class PrintableDemo1 implements Printable { 

    public int print(Graphics g, PageFormat pf, int pageIndex) { 

    StringBuilder builder = new StringBuilder(); 
    builder.append("Test Result:").append("\n") 
    .append("First Line").append("\n") 
      .append("Second Line").append("\n") 
      .append("Third Line").append("\n") 
      .append("Fourth Line").append("\n") 
      .append("Last Line"); 

    if (pageIndex != 0) 
     return NO_SUCH_PAGE; 

    Graphics2D g2 = (Graphics2D) g; 
    g2.setFont(new Font("Serif", Font.PLAIN, 12)); 
    g2.setPaint(Color.black); 
    myDrawString(g2, builder.toString(), 100, 100); 

    return PAGE_EXISTS; 
    } 

    private void myDrawString(Graphics g, String text, int x, int y) { 
     for (String line : text.split("\n")) 
     g.drawString(line, x, y += g.getFontMetrics().getHeight()); 
    } 

    public static void main(String[] args) { 

    PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setPrintable(new PrintableDemo1()); 

    try { 
     pj.print(); 
    } catch (PrinterException e) { 
     e.printStackTrace(); 
    } 

    } 

}