How can I print a single JPanel's contents?

前端 未结 3 454
感动是毒
感动是毒 2020-11-29 03:28

I have a JPanel with two labels with pictures. I need to print these content of the JPanel. Please help me out. How can I print only this JPa

相关标签:
3条回答
  • 2020-11-29 04:02

    just edit and put the name of your frame, panel(jPanel1) and button(print). 'this' refers to the JFrame class(i.e my class extends javax.swing.JFrame ) just put your frame's reference instead of '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();
    }
    
    0 讨论(0)
  • 2020-11-29 04:07

    A simple way to do it would be implementing the Printable interface (in java.awt.print) and adding the specified print method (it works similar to paint—in here, you could specify what components you would want to draw onto the printed page). And when you want to actually print the contents of the panel, obtain a PrinterJob instance and call its setPrintable method, passing the object that implemented Printable.

    That's just a quick overview, though. I'd recommend taking a look at Sun's tutorial on printing for further information.

    0 讨论(0)
  • 2020-11-29 04:26

    Here is an example to print any Swing component.

    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
      }
    }
    
    0 讨论(0)
提交回复
热议问题