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