Java2D (HelloWorldPrinter)

2014-11-24 03:05:56 · 作者: · 浏览: 1
import java.awt.Graphics;
import java.awt.Graphics2D;
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;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class HelloWorldPrinter extends JPanel implements Printable,
		ActionListener {
	private static final long serialVersionUID = -5674812845074326132L;

	public HelloWorldPrinter() {
		JButton printButton = new JButton("Print Hello World");
		printButton.addActionListener(this);
		add(printButton);
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				createAndShowGUI();
			}
		});
	}

	private static void createAndShowGUI() {
		JFrame frame = new JFrame("Hello World Printer");
		frame.setContentPane(new HelloWorldPrinter());
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		PrinterJob job = PrinterJob.getPrinterJob();
		job.setPrintable(this);
		boolean ok = job.printDialog();
		if (ok) {
			try {
				job.print();
			} catch (PrinterException ex) {
				/* The job did not successfully complete */
				ex.printStackTrace();
			}
		}
	}

	@Override
	public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
			throws PrinterException {
		/* We have only one page, and 'page' is zero-based */
		if (pageIndex >
0) { return NO_SUCH_PAGE; } /* (0,0) is outside the imageable area, translate to avoid clipping */ Graphics2D g2 = (Graphics2D) graphics; g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); /* Now we perform our rendering */ g2.drawString("Hello world!", 100, 100); /* Tell the caller that this page is part of the printed document */ return PAGE_EXISTS; } }
\