Printing a JFrame and its contents.

Hi, I am doing my HND Graded unit project, I am using Netbens and I have a JFrame which contains Labels and text boxes, my aim is to click a print button to produce a printed copy of the JFrame and its contents.

I have the JFrame workout screen wich has the following print method

PrintUtilities.printComponent(this);

My PrintUtilities class is the following

package fitnessguru;

import java.awt.*;

import javax.swing.*;

import java.awt.print.*;

public class PrintUtilities implements Printable {

private Component componentToBePrinted;

public static void printComponent(Component c) {

new PrintUtilities(c).print();

}

public PrintUtilities(Component componentToBePrinted) {

this.componentToBePrinted = componentToBePrinted;

}

public void print() {

PrinterJob printJob = PrinterJob.getPrinterJob();

printJob.setPrintable(this);

if (printJob.printDialog())

try {

printJob.print();

} catch(PrinterException pe) {

System.out.println("Error printing: " + pe);

}

}

public int print(Graphics g, PageFormat pageFormat, int pageIndex) {

if (pageIndex > 0) {

return(NO_SUCH_PAGE);

} else {

Graphics2D g2d = (Graphics2D)g;

g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

disableDoubleBuffering(componentToBePrinted);

componentToBePrinted.paint(g2d);

enableDoubleBuffering(componentToBePrinted);

return(PAGE_EXISTS);

}

}

/** The speed and quality of printing suffers dramatically if

* any of the containers have double buffering turned on.

* So this turns if off globally.

* @see enableDoubleBuffering

*/

public static void disableDoubleBuffering(Component c) {

RepaintManager currentManager = RepaintManager.currentManager(c);

currentManager.setDoubleBufferingEnabled(false);

}

/** Re-enables double buffering globally. */

public static void enableDoubleBuffering(Component c) {

RepaintManager currentManager = RepaintManager.currentManager(c);

currentManager.setDoubleBufferingEnabled(true);

}

}

my problem is that the only thing that gets printed is a 1 label, If anyone can help print all of the JfRAME that would be great.

Thanks.

[2396 byte] By [lantus007a] at [2007-11-27 6:49:19]
# 1
hiuse this to get the image of your jframe class,Image b_img = createImage(getWidth(), getHeight());then just print this image with the graphic of your Printable implementationregardsAniruddha
Aniruddha-Herea at 2007-7-12 18:22:59 > top of Java-index,Desktop,Core GUI APIs...
# 2

Thank you for your reply, just learning so didnt quite get to grips with your method, just my inexperience.

found a great thread that enabled me to print my JFrame, here it is for antone else having the same problem

http://forum.java.sun.com/thread.jspa?threadID=5173151&tstart=15

lantus007a at 2007-7-12 18:22:59 > top of Java-index,Desktop,Core GUI APIs...