2009-04-15 8 views

答えて

21

ここにSwingコンポーネントを印刷する例を示します。

componenet_nameというComponentの内容を出力します。このメソッドで表示されていることを確認してください。

public void printComponenet(){ 

    PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setJobName(" Print Component "); 

    pj.setPrintable (new Printable() {  
    public int print(Graphics pg, PageFormat pf, int pageNum){ 
     if (pageNum > 0){ 
     return Printable.NO_SUCH_PAGE; 
     } 

     Graphics2D g2 = (Graphics2D) pg; 
     g2.translate(pf.getImageableX(), pf.getImageableY()); 
     componenet_name.paint(g2); 
     return Printable.PAGE_EXISTS; 
    } 
    }); 
    if (pj.printDialog() == false) 
    return; 

    try { 
     pj.print(); 
    } catch (PrinterException ex) { 
     // handle exception 
    } 
} 
+2

どのようにコンポーネントがページに収まるように拡大縮小することができますか? –

+1

@Saherこれを行う方法を今まで考え出しましたか?ありがとう –

+0

あなたはもっと説明(テキスト)を追加してください。 JComponentを派生させてこのメソッドを追加するのか、それとも何をするのでしょうか?ありがとうございました。 –

4

それは(java.awt.print中)Printableインタフェースを実装し、指定されたprint方法を追加することになる行うための簡単な方法(それはあなたが印刷ページ上に描画したいコンポーネントを指定でき、ここで-in paintに似ています)。実際にパネルの内容を印刷する場合は、PrinterJobインスタンスを取得し、Printableを実装したオブジェクトを渡して、そのsetPrintableメソッドを呼び出します。

これは簡単な概要ですが、詳細については、Sun's tutorial on printingをご覧ください。

0

あなたのフレーム、パネル(jPanel1)とボタン(プリント)の名前を編集して入力するだけです。 'this'はJFrameクラスを指します(つまり、私のクラスはjavax.swing.JFrameを継承します)。これは 'this'の代わりにフレームの参照を入れるだけです。

private void PritnActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    Toolkit tkp = jPanel1.getToolkit(); 
    PrintJob pjp = tkp.getPrintJob(this, null, null); 
    Graphics g = pjp.getGraphics(); 
    jPanel1.print(g); 
    g.dispose(); 
    pjp.end(); 
} 
関連する問題