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.

Print a Swing control out in Java




















Home »
  Java Tutorial »
    Graphics »




Animation
BufferedImage
Color
Font
Gradient
Graphics Settings
Image
Mouse Draw
Print
Shape
Text
Transform