我有一个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