package print;
/*
* PrintTest.java
*/
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
public class PrintTest {
public static void main(String[] args) {
PrintFrame prfr = new PrintFrame();
prfr.setVisible(true);
}
}
/*
* PrintFrame
*/
class PrintFrame extends JFrame implements ActionListener{
private PrintPanel pp;
public PrintFrame() {
super("Printing Swing");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
pp = new PrintPanel();
getContentPane().add(pp);
JButton btPrint = new JButton("Print...");
btPrint.addActionListener(this);
pp.add(btPrint);
add(new JScrollPane(pp));
setSize(200,120);
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent evt){
String command = evt.getActionCommand();
if(command.equals("Print...")) {
PrinterJob printJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = new PageFormat();
pageFormat.setOrientation(PageFormat.LANDSCAPE);
printJob.setPrintable(pp, pageFormat);
if (printJob.printDialog())
try {
printJob.print();
} catch(PrinterException pe) {
System.out.println("Error printing: " + pe);
}
}
}
}
/*
* PrintPanel
*/
class PrintPanel extends JPanel implements Printable {
public PrintPanel() {
setBackground(Color.white);
setPreferredSize(new Dimension(300, 200));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.black);
g.drawRect(20,20,100,50);
g.fillOval(80,80,60,30);
g.drawString("Printing Swing is simple",100,150);
g.setColor(Color.red);
g.drawRect(0,0,299,199);
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
int x = (int)pageFormat.getImageableX() + 1;
int y = (int)pageFormat.getImageableY() + 1;
g.translate(x,y);
RepaintManager currentManager = RepaintManager.currentManager(this);
currentManager.setDoubleBufferingEnabled(false);
paintComponent(g);
currentManager.setDoubleBufferingEnabled(true);
return(PAGE_EXISTS);
}
}
}