Java Drucken

Sudnif

Komplett-PC-Aufrüster(in)
Hallo PCGH Community,

kleines Problem.

Haben in der Schule in Java eine "Dictionary" Klasse geschrieben. Sie ist einfach verkettet und in ihren Elementen stehen die englischen Schlüsselwörter und die jeweils deutsche Übersetzung. Das Dictionary ist immer nach den engl. Schlüsselwörtern geordnet.

Nun soll ich eine Methode schreiben mit der man das ganze mit einem Drucker ausdrucken kann.

Hab mich schonmal nach ein paar Klassen umgeschaut, aber nichts hat bis jetzt so richtig geklappt.
Hatte die Idee das ganze erstmal einfach in einem String zu speichern nach dem Muster "engl. Wort, LEERZEICHEN, MINUS, LEERZEICHEN, deutsche Übersetzung, newline" und diesen String dann irgendwie auszudrucken.
Das mit dem ausdrucken hat bis jetzt noch nicht so geklappt. Die Klassen PrintJob und PrintWriter scheinen aber schonmal richtig zu sein oder? :D
Naja, und das ganze würde natürlich in einer Tabelle o.ä. schöner aussehen. Müsste man das ganze dann vorher in einer HTML Dokument schreiben und dies dann ausrucken?

Ich freu mich auf Lösungsvorschläge und Tipps ;)
 
Jup, "Java ist auch eine Insel" ist wirklich SEHR zu empfehlen. Ein wirklich sehr sehr sehr gutes Buch, das ich wirklich jedem nur empfehlen kann.
 
So hier bin ich nochmal. Kenne "Java ist auch eine Insel" und hab das jetzt auch mal so umgesetzt wie unter dem Abschnitt "Den Drucker am Parallelport ansprechen". Will einfach erstmal nur ein String ausdrucken, aber nichtmal das funktioniert.. es wird immer eine Exception ausgelöst ..

Java Code:
public void printIt()
{
Toolkit tk = Toolkit.getDefaultToolkit();
PrintJob pj = tk.getPrintJob( new Frame(), "", null );
if ( pj != null && ! getDictionary().equals(""))
{

// FileOutputStream in PrintWriter packen
try
{

OutputStream fos = new FileOutputStream( "PRN:" ); // Hier wird die Exception ausgelöst..
PrintWriter pw = new PrintWriter( fos );
pw.print( getDictionary());
pw.close();
System.out.println("Druck erfolgreich");

}
catch (IOException e) {System.out.println("Fehler");}
}
}

Wär cool wenn mir wer sagen könnte wo der Fehler liegt ;)
 
Also "PRN" stammt AFAIK noch aus DOS-Zeiten und meint in der Regel die parallele Schnittstelle - die habe ich bei neueren PCs aber schon lange nicht mehr gesehen ;)

Hast du dir das hier mal angesehen? Ich habe mit Java noch nicht gedruckt, habe aber mal in einer anderen Anwendung eine entsprechende Funktionalität implementiert. Und das ging nicht einfach mit xyz.printLine(text) sondern war deutlich hässlicher (Layout, Textformat, etc. manuell behandeln; wie das hier bei dem verlinkten Artikel der Fall ist).
 
Der Fehler liegt hier:
Code:
catch (IOException e) {System.out.println("Fehler");}
Warum fängst du dir exception ab, ohne dir weitere Info´s ausgeben
zu lassen? :P Versuchs mal so und poste die ersten 3 Zeilen der
Fehlermeldung:

Code:
catch (IOException e) {
System.out.println("Fehler");
e.printStackTrace(); //So ungefähr, hab die genaue Syntax gerade nicht im Kopf...
}
 
Jo, das Problem scheint echt dieses PRN zu sein..

java.io.FileNotFoundException: PRN: (Das System kann die angegebene Datei nicht finden)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
at Dictionary.printIt(Dictionary.java:136)
at __SHELL7.run(__SHELL7.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at bluej.runtime.ExecServer$3.run(ExecServer.java:774)

Hat irgendwer ne Idee wie ich das Problem erstmal möglichst einfach beheben kann? :D
 
Ja hatte das auch schon vorher gesehen.. bloß hatte gehofft dass ich das mit ner simplen Methode allein hinkrieg. Scheint ja nicht der Fall zu sein. :D
 
Ja hatte das auch schon vorher gesehen.. bloß hatte gehofft dass ich das mit ner simplen Methode allein hinkrieg. Scheint ja nicht der Fall zu sein. :D
Ja, leider ist das so kompliziert.

Edit: Eventuell klappt der von dir gepostete Code mit dem richtigen Drucker (zumindest für Text). Mir ist allerdings jetzt nicht klar, wie du an den Namen/die Bezeichnung kommst, sollte es funktionieren. Bei dem von mir verlinkten Weg bekommst du in der Regel auch den bekannten Drucken-Dialog mitgeliefert, du legst dich also auch nicht auf einen Drucker fest. Dieser Weg ist zwar zuerst einmal mehr Arbeit, aber die Idee dahinter ist, dass man den Code, den man zuvor zum Darstellen in der Anwendung ("Seitenansicht" in Word bspw.) fast 1:1 zum Drucken nutzen kann. Da ist das dann schon sehr angenehm, dass man das nicht doppelt machen muss ;)
 
Zuletzt bearbeitet:
Zurück