Mega Code Archive

 
Categories / Java Tutorial / 2D Graphics
 

Printing setting

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class PrinterSettingUpDialogPrint extends JFrame {   DrawingCanvas canvas= new DrawingCanvas();   JButton setUpButton= new JButton("Page Setup"), printButton= new JButton("Print"), cancelButton= new JButton("Cancel");   PrinterJob printJob = PrinterJob.getPrinterJob();   PageFormat pageFormat = printJob.defaultPage();   PrintableCanvas printableCanvas;   public PrinterSettingUpDialogPrint() {     getContentPane().add(canvas);     JPanel panel = new JPanel();     panel.setLayout(new GridLayout(1, 3));     setUpButton.addActionListener(new ActionListener(){       public void actionPerformed(ActionEvent a){         setup();       }     });     panel.add(setUpButton);     printButton.addActionListener(new ActionListener(){       public void actionPerformed(ActionEvent a){         print();       }     });     panel.add(printButton);     cancelButton.addActionListener(new ActionListener(){       public void actionPerformed(ActionEvent a){         cancel();       }     });     panel.add(cancelButton);     getContentPane().add(BorderLayout.SOUTH, panel);     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     setSize(400, 275);     setVisible(true);   }   private void setup() {     pageFormat = printJob.pageDialog(pageFormat);     printJob.validatePage(pageFormat);   }   private void print() {     printableCanvas = new PrintableCanvas(pageFormat);     printJob.setPrintable(printableCanvas);     boolean ok = printJob.printDialog();     if (ok) {       try {         printJob.print();       } catch (Exception pe) {         System.out.println("Printing Exception Occured!");         pe.printStackTrace();       }     }   }   private void cancel() {     printJob.cancel();   }   public static void main(String arg[]) {     new PrinterSettingUpDialogPrint();   } } class DrawingCanvas extends JPanel {   Font font = new Font("Dialog", Font.BOLD, 50);   FontMetrics fontMetrics;   int w = 400, h = 275;   DrawingCanvas() {     setBackground(Color.white);     setSize(400, 275);     fontMetrics = getFontMetrics(font);   }   public void paintComponent(Graphics g) {     super.paintComponent(g);     Graphics2D g2D = (Graphics2D) g;     paintContent(g2D, w, h);   }   public void paintContent(Graphics2D g2D, int w, int h) {     g2D.setFont(font);     g2D.drawString("Java 2D", (float) (0.5 * (w - fontMetrics         .stringWidth("Java 2D"))), (float) (0.5 * h - 1.25 * fontMetrics         .getHeight()));   } } class PrintableCanvas implements Printable {   DrawingCanvas canvas;   PageFormat pageFormat;   public PrintableCanvas(PageFormat pf) {     pageFormat = pf;   }   public int print(Graphics g, PageFormat pageFormat, int pageIndex)       throws PrinterException {     if (pageIndex >= 1) {       return Printable.NO_SUCH_PAGE;     }     Graphics2D g2D = (Graphics2D) g;     canvas = new DrawingCanvas();     canvas.paintContent(g2D, (int) pageFormat.getImageableWidth(),         (int) pageFormat.getImageableHeight());     return Printable.PAGE_EXISTS;   } }