java swing printing

java - ¿Cómo puedo imprimir un solo contenido de JPanel?



swing printing (3)

Tengo un JPanel con dos etiquetas con fotos. Necesito imprimir estos contenidos de JPanel . Por favor, ayúdame. ¿Cómo puedo imprimir solo el contenido de este JPanel , ya que también tengo diferentes componentes en mi JFrame pero solo necesito imprimir este JPanel ?

Gracias.


Aquí hay un ejemplo para imprimir cualquier componente 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 } }


Una forma sencilla de hacerlo sería implementar la interfaz de print (en java.awt.print ) y agregar el método de print especificado (funciona de forma similar a la paint aquí puede especificar qué componentes desea dibujar en la página impresa). ). Y cuando desee imprimir realmente el contenido del panel, obtenga una instancia de PrinterJob y llame a su método setPrintable , pasando el objeto que implementó Printable .

Sin embargo, eso es sólo una visión general rápida. Recomiendo echar un vistazo al tutorial de Sun sobre impresión para obtener más información.


simplemente edite y ponga el nombre de su marco, panel (jPanel1) y botón (imprimir). ''esto'' se refiere a la clase JFrame (es decir, mi clase extiende javax.swing.JFrame) simplemente coloca la referencia de tu marco en lugar de ''esto''.

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(); }