Java 如何打印单个JPanel';什么内容?

Java 如何打印单个JPanel';什么内容?,java,swing,printing,Java,Swing,Printing,我有一个JPanel,有两个带图片的标签。我需要打印JPanel的这些内容。请帮帮我。我怎样才能只打印这个JPanel的内容,因为我的JFrame上也有不同的组件,但我只需要打印这个JPanel 谢谢。一个简单的方法是实现可打印的接口(在java.awt.print中)并添加指定的打印方法(其工作原理类似于绘制——在这里,您可以指定要在打印页面上绘制的组件)。当您想要实际打印面板的内容时,获取一个PrinterJob实例并调用其setPrintable方法,传递实现Printable的对象 不过

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


谢谢。

一个简单的方法是实现
可打印的
接口(在
java.awt.print
中)并添加指定的
打印
方法(其工作原理类似于
绘制
——在这里,您可以指定要在打印页面上绘制的组件)。当您想要实际打印面板的内容时,获取一个
PrinterJob
实例并调用其
setPrintable
方法,传递实现
Printable
的对象


不过,这只是一个简单的概述。我建议您查看更多信息。

下面是一个打印任何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
  }
}

只需编辑并输入框架、面板(jPanel1)和按钮(print)的名称。 “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并添加这个方法吗?或者我们应该用这个方法做什么?非常感谢。对于
组件的多页打印机