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.
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.
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.0151sec    0.42    6 queries    GZIP Disabled
Time is now: 5th December 2025 - 02:05 PM