【问题标题】:How can I print a single JPanel's contents?如何打印单个 JPanel 的内容?
【发布时间】:2010-10-19 12:23:09
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: java swing printing


    【解决方案1】:

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

    【讨论】:

    • 如何在页面中相应地缩放组件以使其适合?
    • @Saher 你有没有想过如何做到这一点?谢谢
    • 能否请您添加更多解释(文本)?是否应该派生一个 JComponent 并添加此方法,或者应该如何处理?谢谢。
    • look at this 用于Component 的多页打印机
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      不过,这只是一个快速概述。我建议您查看Sun's tutorial on printing 了解更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-23
        • 2019-08-29
        • 2021-07-04
        • 2014-06-04
        相关资源
        最近更新 更多