nathaniells freak
Mitglied
Hallo alle miteinander ich will einen Druck machen aber ich weiss nicht wie!!
Habe dieses Beispiel hier geschrieben:
Aber ich bekomme immer diese Exception:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.java2d.SunGraphics2D cannot be cast to java.awt.print.PrinterGraphics
at myprintpreview.MyPrintPreview.printDokument(MyPrintPreview.java:120)
at myprintpreview.FormPrintControl.drucken(FormPrintControl.java:34)
at myprintpreview.FormPrintControl.druckenActionPerformed(FormPrintControl.java:161)
at myprintpreview.FormPrintControl.access$100(FormPrintControl.java:7)
at myprintpreview.FormPrintControl$2.actionPerformed(FormPrintControl.java:238)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Ich kann mir schon denken das ich zwischen den beiden Klassen nicht hin und her casten kann.
Das Beispiel für den Cast
PrinterJob prjob = ((PrinterGraphics)g2).getPrinterJob();
habe ich auf dieser Seite gefunden
http://www.torsten-horn.de/techdocs/java-print.htm#MyPrintableObject.
Ich habs aber auch schon mit java.awt.print.book probiert, aber hier muss ich ein Objekt erzeugen das das Interface Printable implementiert.
Ich habe keine Ahnung wie ich das Book und printerJob.setPageable(this.book); umsetzen soll.
Hat jemand eine Ahnung
Ich habe eine Bildvorschau gebastelt und versuche jetzt alle BufferedImages zu drucken die ich im Vector gesammelt habe.
Hier mal der Code des Projektes.
Main - Klasse
Habe dieses Beispiel hier geschrieben:
Java:
//PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
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++) {
java.awt.Graphics2D g2 = (java.awt.Graphics2D)this.buffimages.get(i).getGraphics();
PrinterJob prjob = ((PrinterGraphics)g2).getPrinterJob();
prjob.setPrintService(services[iprinter]);
prjob.print();
}
Aber ich bekomme immer diese Exception:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.java2d.SunGraphics2D cannot be cast to java.awt.print.PrinterGraphics
at myprintpreview.MyPrintPreview.printDokument(MyPrintPreview.java:120)
at myprintpreview.FormPrintControl.drucken(FormPrintControl.java:34)
at myprintpreview.FormPrintControl.druckenActionPerformed(FormPrintControl.java:161)
at myprintpreview.FormPrintControl.access$100(FormPrintControl.java:7)
at myprintpreview.FormPrintControl$2.actionPerformed(FormPrintControl.java:238)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Ich kann mir schon denken das ich zwischen den beiden Klassen nicht hin und her casten kann.
Das Beispiel für den Cast
PrinterJob prjob = ((PrinterGraphics)g2).getPrinterJob();
habe ich auf dieser Seite gefunden
http://www.torsten-horn.de/techdocs/java-print.htm#MyPrintableObject.
Ich habs aber auch schon mit java.awt.print.book probiert, aber hier muss ich ein Objekt erzeugen das das Interface Printable implementiert.
Ich habe keine Ahnung wie ich das Book und printerJob.setPageable(this.book); umsetzen soll.
Hat jemand eine Ahnung
Ich habe eine Bildvorschau gebastelt und versuche jetzt alle BufferedImages zu drucken die ich im Vector gesammelt habe.
Hier mal der Code des Projektes.
Main - Klasse
Java:
package myprintpreview;
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\" ");
java.awt.image.BufferedImage buffimage = t.createImage();
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 ", 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, 800, 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, 8));
// ---------------------------------------------------------------------
g.drawString("65556757", 40, 810);
// ---------------------------------------------------------------------
g.drawString("Benutzername", 130, 810);
// ---------------------------------------------------------------------
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(), 350, 810);
g.drawString(sqltime.toString(), 400, 810);
// ---------------------------------------------------------------------
g.drawString("Seite 1 / 3", 520, 810);
// ---------------------------------------------------------------------
//t.setPrintImage(buffimage);
t.addImage(buffimage);
java.awt.image.BufferedImage buffimage1 = t.createImage();
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, 800, 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, 8));
// ---------------------------------------------------------------------
g1.drawString("65556757", 40, 810);
// ---------------------------------------------------------------------
g1.drawString("Benutzername", 130, 810);
// ---------------------------------------------------------------------
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(), 350, 810);
g1.drawString(sqltime1.toString(), 400, 810);
// ---------------------------------------------------------------------
g1.drawString("Seite 2 / 3", 520, 810);
// ---------------------------------------------------------------------
t.setPrintImage(buffimage1);
//t.addImage(buffimage1);
java.awt.image.BufferedImage buffimage2 = t.createImage();
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, 8));
// ---------------------------------------------------------------------
g2.drawString("65556757", 40, 810);
// ---------------------------------------------------------------------
g2.drawString("Benutzername", 130, 810);
// ---------------------------------------------------------------------
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(), 350, 810);
g2.drawString(sqltime2.toString(), 400, 810);
// ---------------------------------------------------------------------
g2.drawString("Seite 3 / 3", 520, 810);
// ---------------------------------------------------------------------
//t.setPrintImage(buffimage2);
t.addImage(buffimage2);
/*byte b[] = new byte[3];
try {
System.in.read(b);
}
catch(Exception e) {
System.out.println(e.getMessage());
}*/
}
}