Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Another print demo

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; 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.event.WindowAdapter; import java.awt.event.WindowEvent; 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 AnotherPrintDemo extends JFrame {   DrawingCanvas canvas;   JButton setUpButton = new JButton("Page Setup");   JButton printButton = new JButton("Print");   JButton cancelButton = new JButton("Cancel");   public AnotherPrintDemo() {     super();     Container container = getContentPane();     canvas = new DrawingCanvas();     container.add(canvas);     JPanel panel = new JPanel(new GridLayout(1, 3));     ButtonListener buttonListener = new ButtonListener();     setUpButton.addActionListener(buttonListener);     panel.add(setUpButton);     printButton.addActionListener(buttonListener);     panel.add(printButton);     cancelButton.addActionListener(buttonListener);     panel.add(cancelButton);     container.add(BorderLayout.SOUTH, panel);     addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     setSize(650, 275);     setVisible(true);   }   class ButtonListener implements ActionListener {     PrinterJob printJob;     PageFormat pageFormat;     PrintableCanvas printableCanvas;     ButtonListener() {       printJob = PrinterJob.getPrinterJob();       pageFormat = printJob.defaultPage();     }     public void actionPerformed(ActionEvent e) {       JButton tempButton = (JButton) e.getSource();       if (tempButton.equals(setUpButton)) {         pageFormat = printJob.pageDialog(pageFormat);         printJob.validatePage(pageFormat);       } else if (tempButton.equals(printButton)) {         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();           }         }       } else if (tempButton.equals(cancelButton)) {         printJob.cancel();       }     }   }   public static void main(String arg[]) {     new AnotherPrintDemo();   } } class DrawingCanvas extends JPanel {   Font font;   FontMetrics fontMetrics;   int w, h;   DrawingCanvas() {     setBackground(Color.white);     setSize(400, 275);     w = this.getWidth();     h = this.getHeight();     font = new Font("Dialog", Font.BOLD, 50);     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 Source and Support", 0,         (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());     // successful printing of the page     return Printable.PAGE_EXISTS;   } }