Ola, tenho um Graphics2D e com um PrinterJob consigo imprimir o mesmo, mas gostaria de poder imprimir mais de um Graphics2D, li algumas coisas sobre Book mas não consegui implementar, alguém teria alguma idéia de como posso trabalhar com o mesmo?
Segue código:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.util.Random;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Points extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
Dimension size = getSize();
Insets insets = getInsets();
int w = size.width - insets.left - insets.right;
int h = size.height - insets.top - insets.bottom;
Random r = new Random();
for (int i = 0; i < 4000; i++) {
int x = Math.abs(r.nextInt()) % w;
int y = Math.abs(r.nextInt()) % h;
if (i % 2 == 0)
g2d.setColor(Color.blue);
else
g2d.setColor(Color.red);
g2d.drawLine(x, y, x, y);
}
}
}
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class Imprimir implements Printable {
private PageFormat pageFormat;
private PrinterJob printerJob;
private Component comp;
boolean scaleWidthToFit = true;
public Imprimir(Component comp) {
pageFormat = new PageFormat();
printerJob = PrinterJob.getPrinterJob();
this.comp = comp;
printDialog();
}
private void printDialog() {
if (printerJob.printDialog()) {
printerJob.setPrintable(this, pageFormat);
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
double scale = 1.0;
Graphics2D graphics2D;
graphics2D = (Graphics2D) graphics;
comp.setSize((int) pageFormat.getImageableWidth(),
(int) pageFormat.getImageableHeight());
comp.validate();
if ((scaleWidthToFit)
&& (comp.getMinimumSize().getWidth() > pageFormat
.getImageableWidth())) {
scale = pageFormat.getImageableWidth()
/ comp.getMinimumSize().getWidth();
graphics2D.scale(scale, scale);
}
graphics2D.setClip((int) (pageFormat.getImageableX() / scale),
(int) (pageFormat.getImageableY() / scale),
(int) (pageFormat.getImageableWidth() / scale),
(int) (pageFormat.getImageableHeight() / scale));
if (pageIndex > 0) {
return Printable.NO_SUCH_PAGE;
}
graphics2D.translate(graphics2D.getClipBounds().getX(), graphics2D
.getClipBounds().getY());
comp.paint(graphics2D);
return Printable.PAGE_EXISTS;
}
}
import java.awt.print.Printable;
public abstract class Main implements Printable {
public static void main(String[] args) {
new Imprimir(new Points());
}
}