package print;
/*
* PrintPanel.java
*/
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
import java.io.*;
public class PrintPanel extends JFrame implements Printable{
private Image img;
public PrintPanel(File bild) {
img = new ImageIcon(bild.getAbsolutePath()).getImage();
setSize(400,300);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
print();
}
public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = new PageFormat();
Paper paper = new Paper();
paper.setSize(595, 842);//<-------------------Format
paper.setImageableArea(5, 5, 585, 832);//<---------------Rand
pageFormat.setPaper(paper);
printJob.setPrintable(this, pageFormat);
if( printJob.printDialog() )
try {
printJob.print();
} catch (PrinterException pe) {
System.out.println("Error printing: " + pe);
}
}
public int print(Graphics g, PageFormat pf, int pageIndex) {
int response = NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D) g;
double pageHeight = pf.getImageableHeight(); //height of printer page
double pageWidth = pf.getImageableWidth(); //width of printer page
int totalNumPages = 1;
// make sure not print empty pages
if (pageIndex >= totalNumPages) {
System.out.println(totalNumPages);
System.out.println(pageIndex);
response = Printable.NO_SUCH_PAGE;
} else {
// shift Graphic to line up with beginning of print-imageable region
g2.translate(pf.getImageableX(), pf.getImageableY());
// shift Graphic to line up with beginning of next page to print
g2.translate(0f, -pageIndex * pageHeight);
etikettenMalen(img, g2, pf);
response = Printable.PAGE_EXISTS;
}
return response;
}
private void etikettenMalen(Image img, Graphics2D g, PageFormat pf){
int x, y = (int)pf.getImageableX();
double scale=(pf.getImageableWidth()/2)/img.getWidth(null);
int w = (int)(img.getWidth(null)*scale);
int h = (int)(img.getHeight(null)*scale);
for (int row = 0; row < 8; row++) {
x = 0;
for (int column = 0; column < 2; column++) {
g.drawImage(img,x,y, (int) (img.getWidth(null)*scale),(int)(img.getHeight(null)*scale) , null);
x += w;
}
y += h;
}
}
public static void main(final String[] args){
new PrintPanel(new File("c:\\etikette.JPG")).setVisible(true);
}
private JButton printBtn;
private JToggleButton toggleButton;
}