Drucken mit Java

Wie versprochen das fertige Programm mit Code!

Ich muss es aber wieder auf 2 Threads aufteilen

Java:
package myprintpreview;

import java.awt.print.PrinterException;
import java.awt.print.PrinterGraphics;
import java.awt.print.PrinterJob;

public class Main {

    public static void main(String[] args) {
        //System.out.println("Bin in der main() - Methode");
        MyPrintPreview t = new MyPrintPreview();
        t.setTitle("Drucken von \"Abfrage Bestellliste\" BatterieBau");
        
        MyPrintPage page = t.createPage();
        java.awt.image.BufferedImage buffimage = page.getImage();
        java.awt.Graphics2D g = buffimage.createGraphics();
        
        g.setBackground(new java.awt.Color(255,255,255));
        // ---------------------------------------------------------------------
        // Auffüllen des Hintergrundes mit Weiss
        g.setColor(new java.awt.Color(255,255,255));
        g.fillRect(0, 0, 595, 842);
        // ---------------------------------------------------------------------
        // Zeichnen der Markierung für die Übersschrift
        g.setColor(new java.awt.Color(213,213,213));        
        g.fillRect(30, 25, 535, 60);
        // ---------------------------------------------------------------------
        // Zeichnen der Überschrift
        g.setColor(new java.awt.Color(0,0,0));
        g.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 32));
        g.drawString("B e s t e l l l i s t e     B a t t e r i e B a u", 47, 65);
        // ---------------------------------------------------------------------
        // Zeichnen des Spalten mit Ihren Inhalten vorher muss aber die größe der Schrift umgeschaltet werden
        g.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 12));
        // ---------------------------------------------------------------------
        // Zeichnen der Fusszeile
        // - Mitarbeiter
        // - Datum und Uhrzeit
        // - Seite x von y
        // - In der DB wird eine Drucknummer erzeugt diese wird geholt und wird dann hier unten angezeigt
        g.setColor(new java.awt.Color(213,213,213));        
        g.fillRect(30, 810, 535, 815);
        // ---------------------------------------------------------------------
        g.setColor(new java.awt.Color(0,0,0));
        g.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 10));
        // ---------------------------------------------------------------------
        g.drawString("65556757", 40, 825);
        // ---------------------------------------------------------------------
        g.drawString("Benutzername", 130, 825);
        // ---------------------------------------------------------------------
        java.util.Date date = new java.util.Date();
        java.sql.Date sqldate = new java.sql.Date(date.getTime());
        java.sql.Time sqltime = new java.sql.Time(date.getTime());        
        g.drawString(sqldate.toString(), 320, 825);
        g.drawString(sqltime.toString(), 400, 825);
        // ---------------------------------------------------------------------
        g.drawString("Seite 1 / 3", 520, 825);
        // ---------------------------------------------------------------------
        
        page.setImage(buffimage);
        t.addPage(page);
        
        
        
        MyPrintPage page1 = t.createPage();
        java.awt.image.BufferedImage buffimage1 = page1.getImage();
        java.awt.Graphics2D g1 = buffimage1.createGraphics();
        
        g1.setBackground(new java.awt.Color(255,255,255));
        // ---------------------------------------------------------------------
        // Auffüllen des Hintergrundes mit Weiss
        g1.setColor(new java.awt.Color(255,255,255));
        g1.fillRect(0, 0, 595, 842);
        // ---------------------------------------------------------------------
        // Zeichnen der Markierung für die Übersschrift
        g1.setColor(new java.awt.Color(213,213,213));        
        g1.fillRect(30, 25, 535, 60);
        // ---------------------------------------------------------------------
        // Zeichnen der Überschrift
        g1.setColor(new java.awt.Color(0,0,0));
        g1.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 32));
        g1.drawString("B e s t e l l l i s t e     T e s t", 47, 65);
        // ---------------------------------------------------------------------
        // Zeichnen des Spalten mit Ihren Inhalten vorher muss aber die größe der Schrift umgeschaltet werden
        g1.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 12));
        // ---------------------------------------------------------------------
        // Zeichnen der Fusszeile
        // - Mitarbeiter
        // - Datum und Uhrzeit
        // - Seite x von y
        // - In der DB wird eine Drucknummer erzeugt diese wird geholt und wird dann hier unten angezeigt
        g1.setColor(new java.awt.Color(213,213,213));        
        g1.fillRect(30, 805, 535, 815);
        // ---------------------------------------------------------------------
        g1.setColor(new java.awt.Color(0,0,0));
        g1.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 10));
        // ---------------------------------------------------------------------
        g1.drawString("65556757", 40, 820);
        // ---------------------------------------------------------------------
        g1.drawString("Benutzername", 130, 820);
        // ---------------------------------------------------------------------
        java.util.Date date1 = new java.util.Date();
        java.sql.Date sqldate1 = new java.sql.Date(date1.getTime());
        java.sql.Time sqltime1 = new java.sql.Time(date1.getTime());        
        g1.drawString(sqldate1.toString(), 330, 820);
        g1.drawString(sqltime1.toString(), 400, 820);
        // ---------------------------------------------------------------------
        g1.drawString("Seite 2 / 3", 520, 820);
        // ---------------------------------------------------------------------
        
        page1.setImage(buffimage1);
        t.addPage(page1);
        t.setPrintImage(buffimage1);        
        
        MyPrintPage page2 = t.createPage();
        java.awt.image.BufferedImage buffimage2 = page2.getImage();
        java.awt.Graphics2D g2 = buffimage2.createGraphics();
        
        g2.setBackground(new java.awt.Color(255,255,255));
        // ---------------------------------------------------------------------
        // Auffüllen des Hintergrundes mit Weiss
        g2.setColor(new java.awt.Color(255,255,255));
        g2.fillRect(0, 0, 595, 842);
        // ---------------------------------------------------------------------
        // Zeichnen der Markierung für die Übersschrift
        g2.setColor(new java.awt.Color(213,213,213));        
        g2.fillRect(30, 25, 535, 60);
        // ---------------------------------------------------------------------
        // Zeichnen der Überschrift
        g2.setColor(new java.awt.Color(0,0,0));
        g2.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 32));
        g2.drawString("B e s t e l l l i s t e     L a g e r", 47, 65);
        // ---------------------------------------------------------------------
        // Zeichnen des Spalten mit Ihren Inhalten vorher muss aber die größe der Schrift umgeschaltet werden
        g2.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 12));
        // ---------------------------------------------------------------------
        // Zeichnen der Fusszeile
        // - Mitarbeiter
        // - Datum und Uhrzeit
        // - Seite x von y
        // - In der DB wird eine Drucknummer erzeugt diese wird geholt und wird dann hier unten angezeigt
        g2.setColor(new java.awt.Color(213,213,213));        
        g2.fillRect(30, 800, 535, 815);
        // ---------------------------------------------------------------------
        g2.setColor(new java.awt.Color(0,0,0));
        g2.setFont(new java.awt.Font(java.awt.Font.SERIF, java.awt.Font.PLAIN, 10));
        // ---------------------------------------------------------------------
        g2.drawString("65556757", 40, 815);
        // ---------------------------------------------------------------------
        g2.drawString("Benutzername", 130, 815);
        // ---------------------------------------------------------------------
        java.util.Date date2 = new java.util.Date();
        java.sql.Date sqldate2 = new java.sql.Date(date2.getTime());
        java.sql.Time sqltime2 = new java.sql.Time(date2.getTime());        
        g2.drawString(sqldate2.toString(), 340, 815);
        g2.drawString(sqltime2.toString(), 400, 815);
        // ---------------------------------------------------------------------
        g2.drawString("Seite 3 / 3", 520, 815);
        // ---------------------------------------------------------------------
        
        page2.setImage(buffimage2);
        t.addPage(page2);
        
        /*byte b[] = new byte[3];
        try {
            System.in.read(b);
        }
        catch(Exception e) {
            System.out.println(e.getMessage());
            
        }*/
    }
}


Java:
package myprintpreview;

/**
 * @author Admin (Logic)
 */

public class FormPreviewFrame extends javax.swing.JFrame {
    // ====================== Steuerelement Deklaration START ==================
    private FormPrintPreview previewPrint = null;
    // ===================== Steuerelement Deklaration END =====================
    
    
    
    // ====================== Variablen Deklaration START ======================    
    // ======================= Variablen Deklaration END =======================
        
    
    
    // ====================== Funktionen Definition START ======================
    private java.awt.image.BufferedImage createPrintImage() {
        java.awt.image.BufferedImage p = new java.awt.image.BufferedImage(595, 842, java.awt.image.BufferedImage.TYPE_INT_RGB);
        java.awt.Graphics2D g = p.createGraphics();
        return p;
    }
    
    public void setPrintImage(java.awt.image.BufferedImage X) {        
        this.previewPrint.setPrintImage(X);
    }
    // ======================= Funktionen Definition END =======================
    
    
    
    // ==================== Eventhandler Definition START ======================
    // ===================== Eventhandler Definition END =======================
    
    
    
    // ======================= Konstruktor definition START ====================
    public  FormPreviewFrame() {
        //System.out.println("Konstruktor FormPreviewFrame");
        // erzeugen des eigenen Frames wovon ich erbe
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        this.setBounds(100, 100, 595, 842);
        this.setLayout(null);
        this.setResizable(false);
        this.setVisible(true);        
        
        // erzeuge abgeleitete Canvas Klasse
        this.previewPrint = new FormPrintPreview();
        this.add(this.previewPrint);
        this.setComponentZOrder(this.previewPrint, 0);        
    }
    // ======================= Konstruktor definition ENDE =====================
}


Java:
package myprintpreview;

import java.awt.print.PrinterException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * @author Admin (Logic)
 */

public class FormPrintControl extends javax.swing.JFrame {
    // ====================== Steuerelement Deklaration START ==================
    private javax.swing.JButton ButtonNaechsteSeite;
    private javax.swing.JButton ButtonVorherigeSeite;
    private javax.swing.JButton ButtonErsteSeite;
    private javax.swing.JButton ButtonLetzteSeite;
    private javax.swing.JButton ButtonDrucken;
    private javax.swing.JButton ButtonAbbrechen;
    
    private javax.swing.JScrollPane ScrollPaneFrame;
    // ===================== Steuerelement Deklaration END =====================
    
    
    
    // ====================== Variablen Deklaration START ======================
    private MyPrintPreview printpreview;
    private int aktuellesimage;
    // ======================= Variablen Deklaration END =======================
        
    
    
    // ====================== Funktionen Definition START ======================
    private void abbrechen() {
        this.printpreview.schliessePrintPreview();
    }
    
    private void drucken() {       
        this.printpreview.printDokument3();
        this.abbrechen();
    }
    
    private void ladeVorherigeSeite() {
        if(this.printpreview.getMaxImages() > 0) {
            int tmp = this.aktuellesimage - 1;
            this.aktuellesimage = tmp;
            if(tmp == 0) {
                this.ButtonErsteSeite.setEnabled(false);
                this.ButtonVorherigeSeite.setEnabled(false);
            }
            this.printpreview.setPrintPage(tmp);
            // entsperren der Buttons für letzteSeite und naechsteSeite
            if(this.ButtonLetzteSeite.isEnabled() == false) {
                this.ButtonLetzteSeite.setEnabled(true);        
            }
            if(this.ButtonNaechsteSeite.isEnabled() == false) {
                this.ButtonNaechsteSeite.setEnabled(true);
            }
        }
    }
    
    private void ladeErsteSeite() {
        if(this.printpreview.getMaxImages() > 0) {            
            this.ButtonErsteSeite.setEnabled(false);
            this.ButtonVorherigeSeite.setEnabled(false);
            this.printpreview.setPrintPage(0);
            // entsperren der Buttons für letzteSeite und naechsteSeite
            if(this.ButtonLetzteSeite.isEnabled() == false) {
                this.ButtonLetzteSeite.setEnabled(true);        
            }
            if(this.ButtonNaechsteSeite.isEnabled() == false) {
                this.ButtonNaechsteSeite.setEnabled(true);
            }
        }
    }
    
    private void ladeLetzteSeite() {
        if(this.printpreview.getMaxImages() > 0) {            
            this.ButtonLetzteSeite.setEnabled(false);
            this.ButtonNaechsteSeite.setEnabled(false);
            this.printpreview.setPrintPage((this.printpreview.getMaxImages() - 1));
            // entsperren der Buttons für ersteSeite und vorherigeSeite
            if(this.ButtonErsteSeite.isEnabled() == false) {
                this.ButtonErsteSeite.setEnabled(true);        
            }
            if(this.ButtonVorherigeSeite.isEnabled() == false) {
                this.ButtonVorherigeSeite.setEnabled(true);
            }
        }
    }
    
    private void ladeNaechsteSeite() {
        if(this.printpreview.getMaxImages() > 0) {
            int tmp = this.aktuellesimage + 1;
            this.aktuellesimage = tmp;
            if(tmp == (this.printpreview.getMaxImages() - 1)) {
                this.ButtonLetzteSeite.setEnabled(false);
                this.ButtonNaechsteSeite.setEnabled(false);
            }
            this.printpreview.setPrintPage(tmp);
            // entsperren der Buttons für ersteSeite und vorherigeSeite
            if(this.ButtonErsteSeite.isEnabled() == false) {
                this.ButtonErsteSeite.setEnabled(true);        
            }
            if(this.ButtonVorherigeSeite.isEnabled() == false) {
                this.ButtonVorherigeSeite.setEnabled(true);
            }
        }
    }
    
    public void setAktuelleSeite(int X) {
        if(this.printpreview.getMaxImages() > 0) {
            if(X == 0) {
                this.ButtonErsteSeite.setEnabled(false);
                this.ButtonVorherigeSeite.setEnabled(false);
            
                this.ButtonLetzteSeite.setEnabled(true);
                this.ButtonNaechsteSeite.setEnabled(true);
            }
            else {
                if(X == (this.printpreview.getMaxImages() - 1)) {
                    this.ButtonErsteSeite.setEnabled(true);
                    this.ButtonVorherigeSeite.setEnabled(true);
            
                    this.ButtonLetzteSeite.setEnabled(false);
                    this.ButtonNaechsteSeite.setEnabled(false);
                }
                else {
                    if(this.ButtonLetzteSeite.isEnabled() == false) {
                        this.ButtonLetzteSeite.setEnabled(true);        
                    }
                    if(this.ButtonNaechsteSeite.isEnabled() == false) {
                        this.ButtonNaechsteSeite.setEnabled(true);
                    }
                    if(this.ButtonErsteSeite.isEnabled() == false) {
                        this.ButtonErsteSeite.setEnabled(true);        
                    }
                    if(this.ButtonVorherigeSeite.isEnabled() == false) {
                        this.ButtonVorherigeSeite.setEnabled(true);
                    }                    
                }
            }
            this.aktuellesimage = X;
        }
        else {
            this.ButtonErsteSeite.setEnabled(false);
            this.ButtonVorherigeSeite.setEnabled(false);
            this.ButtonLetzteSeite.setEnabled(false);
            this.ButtonNaechsteSeite.setEnabled(false);
        }
    }
    
    public int getAktuelleSeite() {
        return this.aktuellesimage;
    }
    // ======================= Funktionen Definition END =======================
        
    
    
    // ==================== Eventhandler Definition START ======================
    private void abbrechenActionPerformed() {
        this.abbrechen();
    }
    
    private void druckenActionPerformed() {
        this.drucken();
    }
    
    private void ladeVorherigeSeiteActionPerformed() {
        this.ladeVorherigeSeite();        
    }
    
    private void ladeErsteSeiteActionPerformed() {
        this.ladeErsteSeite();        
    }
    
    private void ladeLetzteSeiteActionPerformed() {
        this.ladeLetzteSeite();        
    }
    
    private void ladeNaechsteSeiteActionPerformed() {
        this.ladeNaechsteSeite();        
    }
    // ===================== Eventhandler Definition END =======================
    
    
    
    // ======================= Konstruktor definition START ====================
    public FormPrintControl(MyPrintPreview X) {
        //System.out.println("Konstruktor FormPrintControl");
        this.printpreview = X;
        // erzeugen des eigenen Frames wovon ich erbe
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        this.setBounds(695, 100, 250, 110);
        this.setLayout(null);
        this.setResizable(false);        
        this.setTitle("Druckkontrolle");
        
        this.ScrollPaneFrame = new javax.swing.JScrollPane();
        this.ScrollPaneFrame.setBounds(0, 0, 250, 110);
        this.add(this.ScrollPaneFrame);
        this.setComponentZOrder(this.ScrollPaneFrame, 0);
        
        this.ButtonErsteSeite = new javax.swing.JButton("<<");
        this.ButtonErsteSeite.setBounds(20, 20, 50, 20);
        this.ScrollPaneFrame.add(this.ButtonErsteSeite);
        this.ScrollPaneFrame.setComponentZOrder(this.ButtonErsteSeite, 0);
        
        this.ButtonVorherigeSeite = new javax.swing.JButton("<");
        this.ButtonVorherigeSeite.setBounds(70, 20, 50, 20);
        this.ScrollPaneFrame.add(this.ButtonVorherigeSeite);
        this.ScrollPaneFrame.setComponentZOrder(this.ButtonVorherigeSeite, 0);        
        
        this.ButtonNaechsteSeite = new javax.swing.JButton(">");
        this.ButtonNaechsteSeite.setBounds(120, 20, 50, 20);
        this.ScrollPaneFrame.add(this.ButtonNaechsteSeite);
        this.ScrollPaneFrame.setComponentZOrder(this.ButtonNaechsteSeite, 0);
        
        this.ButtonLetzteSeite = new javax.swing.JButton(">>");
        this.ButtonLetzteSeite.setBounds(170, 20, 50, 20);
        this.ScrollPaneFrame.add(this.ButtonLetzteSeite);
        this.ScrollPaneFrame.setComponentZOrder(this.ButtonLetzteSeite, 0);
        
        this.ButtonDrucken = new javax.swing.JButton("Drucken");
        this.ButtonDrucken.setBounds(20, 50, 100, 20);
        this.ScrollPaneFrame.add(this.ButtonDrucken);
        this.ScrollPaneFrame.setComponentZOrder(this.ButtonDrucken, 0);
        
        this.ButtonAbbrechen = new javax.swing.JButton("Abbrechen");
        this.ButtonAbbrechen.setBounds(120, 50, 100, 20);
        this.ScrollPaneFrame.add(this.ButtonAbbrechen);
        this.ScrollPaneFrame.setComponentZOrder(this.ButtonAbbrechen, 0);        
        
        // Alle Eventhandler implementieren
        this.ButtonAbbrechen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                abbrechenActionPerformed();
            }
        });
        
        this.ButtonDrucken.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                druckenActionPerformed();
            }
        });
        
        this.ButtonVorherigeSeite.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ladeVorherigeSeiteActionPerformed();
            }
        });
        
        this.ButtonErsteSeite.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ladeErsteSeiteActionPerformed();
            }
        });
        
        this.ButtonLetzteSeite.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ladeLetzteSeiteActionPerformed();
            }
        });
        
        this.ButtonNaechsteSeite.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ladeNaechsteSeiteActionPerformed();
            }
        });
        
        
        
        this.setVisible(true);
    }
    // ======================= Konstruktor definition ENDE =====================
}
 
Java:
package myprintpreview;

/**
 * @author Admin (Logic)
 */

public class FormPrintPreview extends java.awt.Canvas {
    // ====================== Steuerelement Deklaration START ==================    
    // ===================== Steuerelement Deklaration END =====================
    
    
    
    // ====================== Variablen Deklaration START ======================
    private java.awt.image.BufferedImage printImage = null;
    // ======================= Variablen Deklaration END =======================
        
    
    
    // ====================== Funktionen Definition START ======================
    public java.awt.image.BufferedImage getPrintImage() {
        return printImage;        
    }
  
    public void setPrintImage(java.awt.image.BufferedImage printImage) {
        this.printImage = printImage;
        this.repaint();
    }
  
    public void paint(java.awt.Graphics g)  {
        if(printImage != null) {            
            g.drawImage(this.printImage, 0, 0, this);
        }        
    }
    // ======================= Funktionen Definition END =======================
    
    
    
    // ==================== Eventhandler Definition START ======================
    // ===================== Eventhandler Definition END =======================
    
           
    
    // ======================= Konstruktor definition START ====================
    public FormPrintPreview() {
        this(null);
    }    
    
    public FormPrintPreview(java.awt.image.BufferedImage printImage) {
        super();
        this.printImage = printImage;
    }
    // ======================= Konstruktor definition ENDE =====================
}


Java:
package myprintpreview;

/**
 * @author Admin (Logic)
 */
import java.awt.Graphics2D;
import java.io.FileNotFoundException;
import java.util.Vector;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import java.awt.PrintJob;
import java.awt.Toolkit;
import java.awt.print.PrinterGraphics;
import javax.print.attribute.HashPrintRequestAttributeSet;

public class MyPrintPreview {
    // ====================== Steuerelement Deklaration START ==================
    private FormPreviewFrame formPreviewFrame = null;
    private FormPrintControl formPrintControl = null;
    // ===================== Steuerelement Deklaration END =====================
    
    
    
    // ====================== Variablen Deklaration START ======================
    private Vector<MyPrintPage> buffimages;
    private java.awt.print.Book book = null;
    // ======================= Variablen Deklaration END =======================
    
    
    
    // ====================== Funktionen Definition START ======================    
    public MyPrintPage getPage(int NR) {
        MyPrintPage ret = null;
        if (this.buffimages.capacity() <= NR) {
            ret = this.buffimages.get(NR);
        }
        return ret;
    }

    public MyPrintPage createPage() {
        MyPrintPage page = new MyPrintPage();
        return page;
    }

    public boolean setPrintPage(MyPrintPage X) {
        boolean ret = false;
        if (X != null) {
            this.buffimages.add(X);
            this.buffimages.trimToSize();
            //System.out.println("image value not null");
            for (int i = 0; i < this.buffimages.capacity(); i++) {
                if (this.buffimages.get(i).equals(X) == true) {
                    this.formPrintControl.setAktuelleSeite(i);
                }
            }
            this.formPreviewFrame.setPrintImage(X.getImage());
            ret = true;
        }
        return ret;
    }
    
    public boolean setPrintImage(java.awt.image.BufferedImage X) {
        boolean ret = false;
        if (X != null) {
            for (int i = 0; i < this.buffimages.capacity(); i++) {
                if (this.buffimages.get(i).getImage().equals(X) == true) {
                    this.formPrintControl.setAktuelleSeite(i);
                }
            }
            this.formPreviewFrame.setPrintImage(X);
            ret = true;
        }
        return ret;
    }

    public boolean setPrintPage(int NR) {
        boolean ret = false;
        if (this.buffimages.capacity() >= NR) {
            this.formPreviewFrame.setPrintImage(this.buffimages.get(NR).getImage());
            ret = true;
        }
        this.formPrintControl.setAktuelleSeite(NR);
        return ret;
    }

    public boolean addPage(MyPrintPage X) {
        boolean ret = false;
        if (X != null) {
            this.buffimages.add(X);
            this.buffimages.trimToSize();
            this.formPrintControl.setAktuelleSeite(this.formPrintControl.getAktuelleSeite());
            ret = true;
        }
        return ret;
    }

    public void setTitle(String TITLE) {
        this.formPreviewFrame.setTitle(TITLE);
    }

    public void schliessePrintPreview() {
        this.formPreviewFrame.setVisible(false);
        this.formPrintControl.setVisible(false);

        this.formPreviewFrame.dispose();
        this.formPrintControl.dispose();
    }

    public int getMaxImages() {
        return this.buffimages.capacity();
    }

    public void printDokument1() {
        java.awt.print.PrinterJob printerJob = PrinterJob.getPrinterJob();
        javax.print.PrintService services[] = java.awt.print.PrinterJob.lookupPrintServices();
        boolean doPrint = printerJob.printDialog();
        String sprinter = null;
        int iprinter = -1;
        if (doPrint == true) {
            sprinter = printerJob.getPrintService().getName();
            for(int i = 0;i < services.length;i++) {
                if(services[i].getName().equals(sprinter) == true) {
                    iprinter = i;
                    break;
                }
            }
        }
        
        for(int i = 0;i < this.buffimages.capacity();i++) {
            printerJob.setPrintable(this.buffimages.get(i));           
            try {
               printerJob.print();
            } catch (PrinterException e) {
                e.printStackTrace();
            }
        }
    }
    
    public void printDokument2() {
        java.awt.print.Paper paper = new java.awt.print.Paper();
        paper.setImageableArea(0, 0, 595, 842);        
        java.awt.print.PageFormat pageformat = new java.awt.print.PageFormat();
        pageformat.setPaper(paper);        
        java.awt.print.PrinterJob printerJob = PrinterJob.getPrinterJob();
        //pageformat = printerJob.pageDialog(pageformat);
        System.out.println("Paper Orientation = " + pageformat.getOrientation());
        System.out.println("getImageableHeight() = " + pageformat.getImageableHeight());
        System.out.println("getImageableWidth() = " + pageformat.getImageableWidth());
        System.out.println("getImageableX() = " + pageformat.getImageableX());
        System.out.println("getImageableY() = " + pageformat.getImageableY());
        boolean doPrint = printerJob.printDialog();        
        if (doPrint == true) {
            this.book = new java.awt.print.Book();
            for(int i = 0;i < this.buffimages.capacity();i++) {
                this.book.append(this.buffimages.get(i), printerJob.defaultPage());            
            }
            printerJob.setPageable(this.book);
            try {
                printerJob.print();
            } catch (PrinterException e) {
                e.printStackTrace();
            }
        }
    }
    
    public void printDokument3() {
        // Set DocFlavor and print attributes:
        javax.print.DocFlavor flavor = javax.print.DocFlavor.SERVICE_FORMATTED.PRINTABLE;
        javax.print.attribute.PrintRequestAttributeSet aset = new javax.print.attribute.HashPrintRequestAttributeSet();
        aset.add( javax.print.attribute.standard.MediaSizeName.ISO_A4 );
        
        try {
            java.awt.print.PrinterJob printerJob = PrinterJob.getPrinterJob();
            javax.print.PrintService services[] = javax.print.PrintServiceLookup.lookupPrintServices(flavor, aset);
            boolean doPrint = printerJob.printDialog();
            String sprinter = null;
            int iprinter = -1;
            if (doPrint == true) {
                sprinter = printerJob.getPrintService().getName();
                for(int i = 0;i < services.length;i++) {
                    if(services[i].getName().equals(sprinter) == true) {
                        iprinter = i;
                        break;
                    }
                }
            }
            
            MyPrintDocument document = new MyPrintDocument(this.buffimages);            
            
            PrintService prserv = services[iprinter];
            javax.print.DocPrintJob pj = prserv.createPrintJob();
            javax.print.Doc doc = new javax.print.SimpleDoc(document, flavor, null);
            pj.print( doc, aset );     

        } catch( javax.print.PrintException pe ) { 
          System.err.println( pe );
        } catch( Exception ie ) { 
          System.err.println( ie );
          ie.printStackTrace();
        }
    }
    // ======================= Funktionen Definition END =======================
    
    
    
    // ==================== Eventhandler Definition START ======================
    // ===================== Eventhandler Definition END =======================
    
    
    
    // ======================= Konstruktor definition START ====================
    public MyPrintPreview() {
        //System.out.println("Konstruktor MyPrintPreview");
        this.buffimages = new Vector<MyPrintPage>();
        this.formPreviewFrame = new FormPreviewFrame();
        this.formPrintControl = new FormPrintControl(this);
    }
    // ======================= Konstruktor definition ENDE =====================
}


Java:
package myprintpreview;

/**
 * @author Admin
 */

public class MyPrintDocument implements java.awt.print.Printable {    
    // ====================== Steuerelement Deklaration START ==================
    // ===================== Steuerelement Deklaration END =====================
    
    
    
    // ====================== Variablen Deklaration START ======================
    private java.util.Vector<MyPrintPage> image;
    // ======================= Variablen Deklaration END =======================
    
    
    
    // ====================== Funktionen Definition START ====================== 
    public void setData(java.util.Vector<MyPrintPage> IMAGE) {
        this.image = IMAGE;
        this.image.trimToSize();
        //System.out.println("capacity = " + this.image.capacity());
    } 
    
    public int print(java.awt.Graphics g, java.awt.print.PageFormat pf, int page) {
        //System.out.println("page = " + page);
        if (page >= this.image.capacity()) {
            return NO_SUCH_PAGE;
        } else {            
            java.awt.Graphics2D g2d = (java.awt.Graphics2D)g;
            g2d.drawImage(this.image.get(page).getImage(), 0, 0, null);
            return PAGE_EXISTS;
        }
    }
    // ======================= Funktionen Definition END =======================
    
    
    
    // ==================== Eventhandler Definition START ======================
    // ===================== Eventhandler Definition END =======================
    
    
    
    // ======================= Konstruktor definition START ====================    
    public MyPrintDocument() {
        this.image = new java.util.Vector<MyPrintPage>();
        this.image.trimToSize();
    }
    
    public MyPrintDocument(java.util.Vector<MyPrintPage> IMAGE) {
        this.setData(IMAGE);
    }
    // ======================= Konstruktor definition ENDE =====================
}

Java:
package myprintpreview;

/**
 * @author biesmann
 */

public class MyPrintPage implements java.awt.print.Printable {
    // ====================== Steuerelement Deklaration START ==================
    // ===================== Steuerelement Deklaration END =====================
    
    
    
    // ====================== Variablen Deklaration START ======================
    private java.awt.image.BufferedImage image = null;
    // ======================= Variablen Deklaration END =======================
    
    
    
    // ====================== Funktionen Definition START ====================== 
    public java.awt.image.BufferedImage getImage() {
        return this.image;
    }
    
    public void setImage(java.awt.image.BufferedImage IMAGE) {
        this.image = IMAGE;
    }  
    
    public int print(java.awt.Graphics g, java.awt.print.PageFormat pf, int page) {
        if (page >= 1) { /* We have only one page, and 'page' is zero-based */
            return NO_SUCH_PAGE;
        } else {            
            java.awt.Graphics2D g2d = (java.awt.Graphics2D)g;
            g2d.drawImage(image, 0, 0, null);
            return PAGE_EXISTS;
        }
    }
    // ======================= Funktionen Definition END =======================
    
    
    
    // ==================== Eventhandler Definition START ======================
    // ===================== Eventhandler Definition END =======================
    
    
    
    // ======================= Konstruktor definition START ====================    
    public MyPrintPage() {
        this.image = new java.awt.image.BufferedImage(595, 842, java.awt.image.BufferedImage.TYPE_INT_RGB);
    }
    
    public MyPrintPage(java.awt.image.BufferedImage IMAGE) {
        super();
        this.image = IMAGE;
    }   
    // ======================= Konstruktor definition ENDE =====================
}

SO das war der ganze Quellcode!

Viel spaß damit!!

Und nochmal ein großes Dankeschön an Matze und Sascha die mich nicht aufgegeben haben mich hofnunglosen Fall!! *g* ;-) :)

Die Fragen Bitte Posten in das Thread

CU Nathaniell
 
Zurück