java - Print JLabel with JTable in desktop application -


how print jlabel jtable in java standalone application?

i have created gui in added label , 1 jable . want print gui. used table api print table. if print component content of table not visible.

i using netbeans ide 7.2

here code have used:

import java.awt.graphics; import java.awt.graphics2d; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.print.pageformat; import java.awt.print.printable; import java.awt.print.printerexception; import java.text.messageformat; import java.util.logging.level; import java.util.logging.logger; import javax.swing.joptionpane; import javax.swing.jtable;  public class frm1 extends javax.swing.jinternalframe implements printable,actionlistener{  /**  * creates new form frm1  */ public frm1() {     initcomponents(); jbutton1.addactionlistener(this);   }  /**  * method called within constructor initialize form.  * warning: not modify code. content of method  * regenerated form editor.  */ @suppresswarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="generated code"> private void initcomponents() {      jscrollpane1 = new javax.swing.jscrollpane();     jtable1 = new javax.swing.jtable();     jbutton1 = new javax.swing.jbutton();     jlabel1 = new javax.swing.jlabel();     jlabel2 = new javax.swing.jlabel();      jtable1.setmodel(new javax.swing.table.defaulttablemodel(         new object [][] {             {null, null, null, null},             {null, null, null, null},             {null, null, null, null},             {null, null, null, null}         },         new string [] {             "title 1", "title 2", "title 3", "title 4"         }     ));     jscrollpane1.setviewportview(jtable1);      jbutton1.settext("print");     jbutton1.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             jbutton1actionperformed(evt);         }     });      jlabel1.settext("to");      jlabel2.settext("abc");      javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane());     getcontentpane().setlayout(layout);     layout.sethorizontalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(layout.createsequentialgroup()             .addgap(20, 20, 20)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)                 .addcomponent(jscrollpane1, javax.swing.grouplayout.preferred_size, 367,      javax.swing.grouplayout.preferred_size)                 .addcomponent(jbutton1)                 .addgroup(layout.createsequentialgroup()                     .addcomponent(jlabel1, javax.swing.grouplayout.preferred_size, 49, javax.swing.grouplayout.preferred_size)                     .addpreferredgap(javax.swing.layoutstyle.componentplacement.unrelated)                     .addcomponent(jlabel2)))             .addcontainergap(18, short.max_value))     );     layout.setverticalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(layout.createsequentialgroup()             .addcontainergap(21, short.max_value)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.baseline)                 .addcomponent(jlabel1)                 .addcomponent(jlabel2))             .addpreferredgap(javax.swing.layoutstyle.componentplacement.unrelated)             .addcomponent(jscrollpane1, javax.swing.grouplayout.preferred_size, 188, javax.swing.grouplayout.preferred_size)             .addgap(18, 18, 18)             .addcomponent(jbutton1)             .addcontainergap())     );      pack(); }// </editor-fold>  private void jbutton1actionperformed(java.awt.event.actionevent evt)     {                                          messageformat format=new messageformat("abc ");     try {         jtable1.print(jtable.printmode.normal, format, format, iconable, null, isselected, null);     // todo add handling code here: }                                         catch(exception e){ joptionpane.showmessagedialog(rootpane, "error"); e.printstacktrace(); } } // variables declaration - not modify private javax.swing.jbutton jbutton1; private javax.swing.jlabel jlabel1; private javax.swing.jlabel jlabel2; private javax.swing.jscrollpane jscrollpane1; private javax.swing.jtable jtable1; // end of variables declaration  @override public int print(graphics g, pageformat pf, int page) throws printerexception {   if (page > 0) { /* have 1 page, , 'page' zero-based */         return no_such_page;     }      /* user (0,0) typically outside imageable area, must      * translate x , y values in pageformat avoid clipping      */     graphics2d g2d = (graphics2d)g;     g2d.translate(pf.getimageablex(), pf.getimageabley());      /* print window , visible contents */      this.printall(g);      /* tell caller page part of printed document */     return page_exists; }  @override public void actionperformed(actionevent e) {     try {         jtable1.print(jtable.printmode.fit_width);       } catch (exception ex) {         ex.printstacktrace();     }  } } 

first create bufferedimage designed base panel or internal frame..

private bufferedimage createimage(jpanel panel) {             int w = panel.getwidth();         int h = panel.getheight();         bufferedimage bi = new bufferedimage(w, h, bufferedimage.type_int_rgb);         graphics2d g = bi.creategraphics();         panel.paint(g);         return bi;     } 

pass object of bufferedimage graphicsobject of print api.

@override public int print(graphics g, pageformat pf, int page) throws printerexception { graphics2d g2d = (graphics2d)g; g2d.drawimage(createimage(this), 0, 0, null); g2d.dispose(); } 

Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -