1

名前付きのPrintableクラスがmyPrintableObjectあり、print メソッドは次の方法でオーバーライドされます。

public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException
      {
        if(pageIndex<5)
          {
           pf.setOrientation(PageFormat.LANDSCAPE);
           g.drawString("HELLO FRIEND",100,180);
           return PAGE_EXISTS;
          }
        else
          {return NO_SUCH_PAGE;}

     }

同じドキュメントで複数のページを横方向に印刷したいと考えていました。1ページ目以外印刷中です。常に縦向きで印刷されます。

どうすればこれを修正できますか?

4

1 に答える 1

1

はい、どうぞ:

    PrinterJob job = PrinterJob.getPrinterJob();
    PageFormat pf = job.defaultPage();
    pf.setOrientation(PageFormat.LANDSCAPE);
    job.setPrintable(myPrintableObject, pf);

作業例:

public class MyPrintable implements Printable {

    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
        if (pageIndex < 5) {
            graphics.drawString("HELLO FRIEND", 100, 180);
            return PAGE_EXISTS;
        } else {
            return NO_SUCH_PAGE;
        }
    }

    public static void main(String[] args) {
        PrinterJob job = PrinterJob.getPrinterJob();
        PageFormat pf = job.defaultPage();
        pf.setOrientation(PageFormat.LANDSCAPE);
        job.setPrintable(new MyPrintable(), pf);

        boolean ok = job.printDialog();
        if (ok) {
            try {
                job.print();
            } catch (PrinterException ex) {
                /* The job did not successfully complete */
            }
        }
    }
}
于 2012-08-30T09:38:16.210 に答える