Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Drucken mit dem PrintJob

0 views
Skip to first unread message

Richard Zierhut

unread,
Feb 16, 2002, 2:03:10 PM2/16/02
to
Eigentlich sollte es ganz einfach sein:
ich wollte den Druckdialog nicht mehr haben und
habe dafür im Internet eine nette Methode gefunden:

JobAttributes theJobAttribs = new JobAttributes();
PageAttributes thePageAttribs = new PageAttributes();

theJobAttribs.setDialog(JobAttributes.DialogType.NONE);
PrintJob myJob = getToolkit().getPrintJob(this, "PrintJob",theJobAttribs,
thePageAttribs);

bis jetzt habe ich immer mit:

PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);

gearbeitet was auch toll funktionierte.
Jetzt weigert sich aber der PrintJob
ein Graphics Objekt zurück zu geben.
Ich hab schon alles probiert, sogar unveränderte
Beispiele aus dem Netzt geladen und ausprobiert.
Es ist immer das gleiche

java.lang.NullPointerException
at sun.awt.windows.WGraphics.clone(WGraphics.java:146)
at sun.awt.windows.WPrintGraphics.clone(WPrintGraphics.java:74)
at sun.java2d.SunGraphics2D.create(SunGraphics2D.java:262)
at sun.awt.windows.WPrintGraphics.create(WPrintGraphics.java:86)
at
sun.awt.windows.WPrintGraphicsWrapper.create(WPrintGraphicsWrapper.java:51)
at sun.awt.windows.WPrintJob.getGraphics(WPrintJob.java:74)
at PrintingTest.actionPerformed(PrintingTest.java:28)

Der PrintJob kann nicht null sein, weil eine if Abfrage das verhindert.
wie kann ich das Graphics Objekt bekommen?
wie gesagt die Beispiele kommen aus dem Netz
und sogar von Sun!! es kann also nicht daran liegen....
vielen Dank


Richard


Linda Radecke

unread,
Feb 16, 2002, 2:44:57 PM2/16/02
to

Richard Zierhut wrote:

> Eigentlich sollte es ganz einfach sein:
> ich wollte den Druckdialog nicht mehr haben und
> habe dafür im Internet eine nette Methode gefunden:

Um den PrintDialog nicht aufzurufen, brauchst du keine extra-
Methode, ruf ihn einfach nicht auf mit PrinterJob.

> JobAttributes theJobAttribs = new JobAttributes();
> PageAttributes thePageAttribs = new PageAttributes();

> theJobAttribs.setDialog(JobAttributes.DialogType.NONE);
> PrintJob myJob = getToolkit().getPrintJob(this, "PrintJob",theJobAttribs,
> thePageAttribs);

Das bezieht sich auf java.awt.PrintJob, genau.

> bis jetzt habe ich immer mit:

> PrinterJob printJob = PrinterJob.getPrinterJob();
> printJob.setPrintable(this);

> gearbeitet was auch toll funktionierte.
> Jetzt weigert sich aber der PrintJob
> ein Graphics Objekt zurück zu geben.

Du hast bis jetzt PrinterJob verwendet, da kann man die JobAttribute
nicht verwenden, das stimmt. Ist dein Druckbereich, JPanel, was auch
immer zum JFrame hinzugefuegt und pack() aufgerufen?

> Ich hab schon alles probiert, sogar unveränderte
> Beispiele aus dem Netzt geladen und ausprobiert.
> Es ist immer das gleiche
>
> java.lang.NullPointerException

PrinterJob und PrintJob ist aber nicht dasselbe. Kommt es dir denn
darauf an,einen bestimmten Drucker zu spezifizieren? Sonst koenntest
du ja auch einfach Printerjob nehmen und den Dialog nicht aufrufen,
dafuer brauchst du die JobAttribute nicht. Ich kenne die von dir
erwaehnten Beispiele mit PrintJob zwar nicht, aber es klappt bei mir,
wenn ich es verwende (mit Drucker-Spezifikation):

JobAttributes jab = new JobAttributes();
PageAttributes pap = new PageAttributes();
jab.setDialog(JobAttributes.DialogType.NONE);

jab.setPrinter("HP DeskJet 610C");

PrintJob pjob = getToolkit().getPrintJob(MyClass.this,
"PrintJobTest",
jab, pap);


Wenn du nicht einen anderen als den Default-Drucker verwenden
moechtest, kannst du aber auch einfach bei PrinterJob bleiben.

Linda
--
__/\__ And then the wind pulls the clouds across the moon
\_\/_/ Your light fills the darkest room, and I can see
/_/\_\ the miracle that keeps us from falling
\/ The Sweetest Gift, Sade

Richard Zierhut

unread,
Feb 16, 2002, 3:46:28 PM2/16/02
to
> Um den PrintDialog nicht aufzurufen, brauchst du keine extra-
> Methode, ruf ihn einfach nicht auf mit PrinterJob.

eigentlich war es klar:
ich habe den Druckaufruf von einem Beispiel geklaut
und dort wurde der Printdialog in einer if Clause
abgefragt. Das hab ich natürlich überlesen weil if
ja meist in die Richtung "bist du schon initialisiert?"
benutzt wird.. Jetzt klappt die Sache wunderbar und es gibt keinen Stress
mit
Printjob auch wenn ich wohl nie wissen werde was los war *g*
Danke

Richard


0 new messages