我有一個JPanel
與兩個標籤與圖片。我需要打印這些JPanel
的內容。請幫助我。如何才能打印此JPanel
的內容,因爲我的JFrame
上也有不同的組件,但我只需要打印此JPanel
。如何打印單個JPanel的內容?
謝謝。
我有一個JPanel
與兩個標籤與圖片。我需要打印這些JPanel
的內容。請幫助我。如何才能打印此JPanel
的內容,因爲我的JFrame
上也有不同的組件,但我只需要打印此JPanel
。如何打印單個JPanel的內容?
謝謝。
以下是打印任何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
}
}
一個簡單的方法來做到這將是實現Printable
接口(在java.awt.print
)並添加指定print
方法(它的工作原理類似於paint
-in在這裏,你可以指定你想繪製到打印頁面的哪些組件)。並且,如果要實際打印面板的內容,請獲取PrinterJob
實例並調用其setPrintable
方法,傳遞實現了Printable
的對象。
雖然這只是一個快速概覽。我建議看看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();
}
如何在頁面中相應地縮放組件以適合它? – 2011-05-27 05:57:13