Print a Swing control out in Java
Description
The following code shows how to print a Swing control out.
Example
/* w w w. jav a2s . co m*/
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.PrintJob;
import java.awt.Toolkit;
import java.util.Properties;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame {
MyCanvas canvas = new MyCanvas();
public static void main(String args[]) {
Main app = new Main();
}
public Main() {
add("Center", canvas);
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
String name = "Test print job";
Properties properties = new Properties();
PrintJob pj = Toolkit.getDefaultToolkit().getPrintJob(Main.this, name, properties);
if (pj != null) {
canvas.printAll(pj.getGraphics());
pj.end();
}
}
}
class MyCanvas extends JPanel {
public void paint(Graphics g) {
Dimension size = getSize();
int width = size.width;
int height = size.height;
int x1 = (int) (width * 0.1);
int x2 = (int) (width * 0.9);
int y1 = (int) (height * 0.1);
int y2 = (int) (height * 0.9);
g.drawRect(x1, y1, x2 - x1, y2 - y1);
g.drawOval(x1, y1, x2 - x1, y2 - y1);
g.drawLine(x1, y1, x2, y2);
g.drawLine(x2, y1, x1, y2);
String text = "Print Me! ";
text += text;
text += text;
g.drawString(text, x1, (int) ((y1 + y2) / 2));
g.dispose();
}
}
The code above generates the following result.