2011-09-17 80 views
0

我已經嘗試在同一頁面中打印兩個JPanel,每個jpanel完全適合半頁。在同一頁面中打印兩個JPanel

我所做的是將jpanels包裝在另一個實現Printable的jpanel中。

的問題是,只有正確地打印在第一(頂部)的JPanel,

在網頁的其餘部分填充有灰色正方形

這是對包裝的JPanel

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) 
      throws PrinterException 
    { 

     if (pageIndex == 0) 
     { 
      Graphics2D g2 = (Graphics2D) graphics; 
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
        RenderingHints.VALUE_ANTIALIAS_ON);    
      g2.scale(.485, .473);  
      paint(graphics);  
      g2.setColor(Color.white); 
      g2.fillRect(0, 0, 1, 1); 

      return Printable.PAGE_EXISTS; 
     } else 
     { 
      return Printable.NO_SUCH_PAGE; 
     } 

    } 
代碼

這調用代碼

PrinterJob pj = PrinterJob.getPrinterJob(); 
     pj.setJobName("Factura Procter & Gamble"); 

     if (pj.printDialog()) 
     { 
      try 
      { 
       for (int i = 0; i < 1; i++) 
       { 
        pj.setPrintable(listaPaneles.get(i)); 
        pj.print(); 

       } 
      } catch (PrinterException e) 
      { 
       System.out.println(e); 
      } 
     } 

請幫幫我,謝謝。

+0

問題解決了,謝謝 –

回答

1

首先,我認爲,你是不是打印所有這些

代替

for (int i = 0; i < 1; i++) 
{ 
    pj.setPrintable(listaPaneles.get(i)); 
    pj.print(); 
} 

嘗試

for (JPanel jPanel : listaPaneles) 
{ 
    pj.setPrintable(jPanel); 
    pj.print(); 
} 

其次,也許你需要包裝內的另一個你的兩個面板Printable容器並只打印這一個。

+0

感謝您的幫助,與FOR的東西是故意的,問題是邊界佈局 –