Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Printing JPanel results with a blank page

843806Jan 15 2008 — edited Jan 15 2008
I have been trying to print a JPanel with out any luck, I've read the various examples, http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-Printing.html and http://java.sun.com/developer/technicalArticles/Printing/SwingPrinting/
I can get the print dialog no problem and the printer starts up and prints, but theres nothing on the sheet.
Am I missing something entirely?


main screen
private void printButtonActionPerformed(java.awt.event.ActionEvent evt) {
        
             Memo m= new Memo(); // the JPanel to print
             m.componentToPrint(m);
             
             PrinterJob printJob = PrinterJob.getPrinterJob();
             printJob.setPrintable(m);
             
             if (printJob.printDialog())
             try 
             { 
                printJob.print();
             } 
             catch(PrinterException ex) 
             {
                System.out.println("Error printing: " + ex.getMessage());
             }
}
The JPanel to print
package nonconforming;

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import javax.swing.RepaintManager;


public class Memo extends javax.swing.JPanel implements Printable{
    
    /** Creates new form Memo */
    public Memo() {
        initComponents();
    }
                       
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();

        setBackground(new java.awt.Color(255, 255, 255));

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nonconforming/bgmlogo.png"))); // NOI18N

        jLabel2.setFont(new java.awt.Font("Arial", 1, 18));
        jLabel2.setText("BGM Fastener Co., Inc.");

        jLabel3.setFont(new java.awt.Font("Arial", 0, 11));
        jLabel3.setText("759 Old Willow Ave. Honesdale, PA 18431");

        jLabel4.setFont(new java.awt.Font("Arial", 0, 11));
        jLabel4.setText("Phone: 800-233-4270/570-253-5046/FAX 570-253-2469");

        jLabel5.setFont(new java.awt.Font("Arial", 0, 11));
        jLabel5.setText("Email: info@bgmfastener.com Website: http://bgmfastener.com");

        jLabel6.setFont(new java.awt.Font("Dialog", 2, 36));
        jLabel6.setText("MEMO");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel3)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(jLabel2)
                                    .addContainerGap(103, Short.MAX_VALUE))
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(jLabel4)
                                    .addContainerGap(32, Short.MAX_VALUE))
                                .addComponent(jLabel5))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(38, 38, 38)
                        .addComponent(jLabel6))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel5)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel6)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                .addContainerGap(62, Short.MAX_VALUE))
        );
    }              
    
    

    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    // End of variables declaration                   
    private Component printComponent;
    
public void componentToPrint(Component c)
{
    printComponent=c;
}
    
        
public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException{
        if (pageIndex > 0) 
        {
          return(NO_SUCH_PAGE);
        } 
        else 
        {
         
          Graphics2D g2d = (Graphics2D)g;
          g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
          // Turn off double buffering
          disableDoubleBuffering(printComponent);
          printComponent.paint(g2d);
          // Turn double buffering back on
          enableDoubleBuffering(printComponent);
          return(PAGE_EXISTS);
        }
      }
public static void disableDoubleBuffering(Component c) 
{
    RepaintManager currentManager = RepaintManager.currentManager(c);
    currentManager.setDoubleBufferingEnabled(false);
}

public static void enableDoubleBuffering(Component c) 
{
    RepaintManager currentManager = RepaintManager.currentManager(c);
    currentManager.setDoubleBufferingEnabled(true);
}
}
Thank you for any help
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 12 2008
Added on Jan 15 2008
1 comment
214 views