hallo
ich möchte den inhalt eines string arrays ausdrucken.
leider verstehe ich das konzept hinter dem drucken in java nicht. die suche brachte auch nicht wirklich etwas.
auch habe ich mir von javabuch.de das kapitel über drucken durchgelesen. aber die sagen nur, daß es da einige klassen für gibt, aber wie man diese klassen benutzt sagen sie nicht. ich habe mir in der faq hier das beispiel angeschaut, und daraus mal teile für mein programm genommen.
ich möchte einen printdialog öffnen, dort halt den drucker auswählen und dann drucken.
ist vieleicht nicht das eleganteste.
das
job.addPrintJobListener(drucker);
in zeile 34 erzeugt ein fehler, weil er die variable drucker nihct findet.
ich weiss aber nicht, was ich da reinschreiben soll.
wenn ich die zeile auskommentiere, dann kann ich sie zwar kompilieren, aber beim ausführen erzeugt das - normal halt - ganz schön fehler:
java.lang.IllegalArgumentException: services must be non-null and non-empty
at javax.print.ServiceUI.printDialog(ServiceUI.java:143)
at Ergebnis.drucken(Ergebnis.java:102)
at GUI.jButton3MouseClicked(GUI.java:84)
at GUI.access$300(GUI.java:8)
at GUI$4.mouseClicked(GUI.java:60)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5103)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3207)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
was kann ich da tun?
ich möchte den inhalt eines string arrays ausdrucken.
leider verstehe ich das konzept hinter dem drucken in java nicht. die suche brachte auch nicht wirklich etwas.
auch habe ich mir von javabuch.de das kapitel über drucken durchgelesen. aber die sagen nur, daß es da einige klassen für gibt, aber wie man diese klassen benutzt sagen sie nicht. ich habe mir in der faq hier das beispiel angeschaut, und daraus mal teile für mein programm genommen.
ich möchte einen printdialog öffnen, dort halt den drucker auswählen und dann drucken.
Code:
public static void drucken()
{
try{
PrintWriter w = new PrintWriter(new FileWriter("temp.txt"));
for(int i = 0; i < anzahl; i++) {w.println(x[i]);}
w.flush();
w.close();
System.out.println( "File Saved" );
}
catch (IOException ioe)
{System.out.println( "IO error: " + ioe );}
try
{
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//setzt das auszudruckend Dokument fest
DocFlavor flavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_US_ASCII; //hier nachsehen, welches man benötigt!
PrintService printService[] = PrintServiceLookup.lookupPrintServices(
flavor, pras);
PrintService defaultService = PrintServiceLookup.
lookupDefaultPrintService();
PrintService service = service = ServiceUI.printDialog(null, 200, 200, printService, defaultService, flavor, pras);
//wenn der Service nicht null ist, wird ausgedruckt
if (service != null)
{
DocPrintJob job = service.createPrintJob();
//fügt listener hinzu
job.addPrintJobListener(drucker);
FileInputStream fis = new FileInputStream("temp.txt");
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
job.print(doc, pras);
}
}
//wenn kein Druckerdevice gefunden wurde!!
catch (ArrayIndexOutOfBoundsException ex)
{
ex.printStackTrace();
System.out.println("Keine Drucker gefunden!!");
}
//bei sonstigen Exceptions!
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
ist vieleicht nicht das eleganteste.
das
job.addPrintJobListener(drucker);
in zeile 34 erzeugt ein fehler, weil er die variable drucker nihct findet.
ich weiss aber nicht, was ich da reinschreiben soll.
wenn ich die zeile auskommentiere, dann kann ich sie zwar kompilieren, aber beim ausführen erzeugt das - normal halt - ganz schön fehler:
java.lang.IllegalArgumentException: services must be non-null and non-empty
at javax.print.ServiceUI.printDialog(ServiceUI.java:143)
at Ergebnis.drucken(Ergebnis.java:102)
at GUI.jButton3MouseClicked(GUI.java:84)
at GUI.access$300(GUI.java:8)
at GUI$4.mouseClicked(GUI.java:60)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5103)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3207)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
was kann ich da tun?