如何打印单个JPanel的内容?

我有一个带有两个带图片标签的JPanel 。 我需要打印JPanel这些内容。 请帮帮我。 我怎么才能打印这个JPanel的内容,因为我的JFrame上也有不同的组件,但我只需要打印这个 JPanel

谢谢。

以下是打印任何Swing组件的示例。

 public void printComponenet(Component component){ 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()); component.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的打印教程以获取更多信息。

只需编辑并输入框架,面板(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(); }