私はJPanel
を絵に2つのラベルが付いています。 JPanel
の内容を印刷する必要があります。私を助けてください。このJPanel
の内容を印刷するにはどうすればいいですか?JFrame
にも異なるコンポーネントがありますが、のJPanel
を印刷するだけです。JPanelのコンテンツを1枚印刷するにはどうしたらいいですか?
ありがとうございました。
私はJPanel
を絵に2つのラベルが付いています。 JPanel
の内容を印刷する必要があります。私を助けてください。このJPanel
の内容を印刷するにはどうすればいいですか?JFrame
にも異なるコンポーネントがありますが、のJPanel
を印刷するだけです。JPanelのコンテンツを1枚印刷するにはどうしたらいいですか?
ありがとうございました。
ここに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
}
}
それは(java.awt.print
中)Printable
インタフェースを実装し、指定されたprint
方法を追加することになる行うための簡単な方法(それはあなたが印刷ページ上に描画したいコンポーネントを指定でき、ここで-in paint
に似ています)。実際にパネルの内容を印刷する場合は、PrinterJob
インスタンスを取得し、Printable
を実装したオブジェクトを渡して、そのsetPrintable
メソッドを呼び出します。
これは簡単な概要ですが、詳細については、Sun's tutorial on printingをご覧ください。
あなたのフレーム、パネル(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();
}
どのようにコンポーネントがページに収まるように拡大縮小することができますか? –
@Saherこれを行う方法を今まで考え出しましたか?ありがとう –
あなたはもっと説明(テキスト)を追加してください。 JComponentを派生させてこのメソッドを追加するのか、それとも何をするのでしょうか?ありがとうございました。 –