2011-09-17 23 views
0

同じページに2つのJPanelを印刷しようとしましたが、各jpanelは半ページに完全に収まります。同じページに2つのJPanelを印刷

私がしているのは、Printableを実装している別のjpanelでjpanelsをラップすることです。

問題は、これだけラッパーの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; 
     } 

    } 
のコードであり、第一(上部)のJPanel正しく

ページの残りの部分は灰色の正方形

で満たされているを印刷することです

この呼び出しコード

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さんの仕事は意図的でした。問題は境界線レイアウトでした –

関連する問題