2016-04-11 11 views
1

Я пытаюсь экспортировать некоторые результаты с помощью java print/printdialog. Я хочу напечатать несколько строк (используя «\ n»), но мой экспорт - простая строка. Как я могу решить эту проблему?Как экспортировать многострочный текст с помощью printdialog в java?

вот мой пример кода:

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

* «Я хочу напечатать мульти линии (с помощью„\ п“)» * - Вы не можете, что это не так, как 'работает drawString', вам нужно будет нарисовать каждую линию по отдельности – MadProgrammer

+0

[Рисование Multiple Lines of Text] (http://docs.oracle.com/javase/tutorial/2d/text/drawmulstring.html) может быть сложнее, чем вам нужно, но это хорошая ссылка;) – MadProgrammer

+0

Если вы действительно смелы [ вот пример] (http://stackoverflow.com/questions/14007041/awt-eventqueue-0-java-lang-nullpointerexception/14007091#14007091) – MadProgrammer

ответ

0

Благодаря @MadProgrammer я нашел решение, и обновить свой код.

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(); 
    } 

    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^