Welcome Guest ( Log In | Register )

Bump Topic Topic Closed RSS Feed

Outline · [ Standard ] · Linear+

 Print JFrame in Java

views
     
TSexorcisto
post Sep 19 2008, 07:28 PM, updated 18y ago

New Member
*
Junior Member
41 posts

Joined: Oct 2006
Hi all,

Can anyone show me an example/codes of how to print a JFrame and its components?

Thanks.
pengkiat
post Sep 19 2008, 07:45 PM

New Member
*
Junior Member
41 posts

Joined: Jan 2005


extend the JFrame component from you class will do...
TSexorcisto
post Sep 19 2008, 07:59 PM

New Member
*
Junior Member
41 posts

Joined: Oct 2006
pengkiat - I already did..

Here's the codes I found from the Internet and it only prints top left of my JFrame in one whole page. How do I make it to print the whole JFrame?

QUOTE
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©.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);
    }
  }

  public static void disableDoubleBuffering(Component c) {
    RepaintManager currentManager = RepaintManager.currentManager©;
    currentManager.setDoubleBufferingEnabled(false);
  }

  public static void enableDoubleBuffering(Component c) {
    RepaintManager currentManager = RepaintManager.currentManager©;
    currentManager.setDoubleBufferingEnabled(true);
  }
}
Anyone can help or where I should modify? Thanks.
zipZ
post Sep 20 2008, 04:28 PM

Getting Started
**
Junior Member
113 posts

Joined: Oct 2007


only prints top left of my JFrame in one whole page?? not too understand.. try to set your JFrame size to bigger size, it works?
TSexorcisto
post Sep 20 2008, 06:52 PM

New Member
*
Junior Member
41 posts

Joined: Oct 2006
QUOTE(zipZ @ Sep 20 2008, 04:28 PM)
only prints top left of my JFrame in one whole page?? not too understand.. try to set your JFrame size to bigger size, it works?
*
like.. a photo.. it only prints the top left part of the photo... and when it is printed, the top left part takes up the whole paper

Topic ClosedOptions
 

Change to:
| Lo-Fi Version
0.0165sec    0.21    5 queries    GZIP Disabled
Time is now: 5th December 2025 - 07:03 AM