Hi leutz.
folgendes Problem, ich will was ausdrucken aber will den schacht dabei bestimmen.
habe folgendes beispiel gefunden aber das funktioniert nicht wirklich bei mir.
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=666977
hab mal meinen Code in ein laufendes Programm gepackt damit man sich das mal anschaun kann.
ich komm allein echt nimmer weiter!!
diese Zeile will Ihren Zweck nicht erfüllen
wenn man sich die Zeile ausgeben lässt ist sie immer null.
egal welchen Drucker ich nehme.
Ich hab auch mal paar println eingebaut damit man weiss was passiert.
nach dem link sollte das eigentlich so funktionieren.
Ich hoffe mir kann da irgendwer helfen
PS:diesen lösungsweg kenne ich aber er bringt mir nichts da ich auch drucker mit n trays ansprechen muss und diese einzeln auswählen muss
gruss
MScalli
folgendes Problem, ich will was ausdrucken aber will den schacht dabei bestimmen.
habe folgendes beispiel gefunden aber das funktioniert nicht wirklich bei mir.
http://forum.java.sun.com/thread.jspa?forumID=28&threadID=666977
hab mal meinen Code in ein laufendes Programm gepackt damit man sich das mal anschaun kann.
ich komm allein echt nimmer weiter!!
Code:
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.ArrayList;
import java.util.HashMap;
import javax.print.DocFlavor;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.standard.Media;
import javax.print.attribute.standard.MediaTray;
class MyPrinter
{
public static void main( String[] args )
{
setTray();
System.exit( 0 );
}
public static void setTray(){
HashMap<PrintService, ArrayList<MediaTray>> map = new HashMap<PrintService, ArrayList<MediaTray>>();
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
PrintService service = null;
for (int i=0; i<services.length; i++) {
service = services[i];
System.out.println(i + ". -->" + service);
ArrayList<MediaTray> trays = new ArrayList<MediaTray>();
map.put(service, trays);
Object attributes;
attributes = service.getSupportedAttributeValues(Media.class, DocFlavor.SERVICE_FORMATTED.PAGEABLE, null);
if (attributes != null && attributes.getClass().isArray()) {
Media[] media = (Media[]) attributes;
for (int iMedia=0; iMedia<media.length; iMedia++)
if (media[iMedia] instanceof MediaTray){
System.out.println(" " + media[iMedia]);
trays.add((MediaTray) media[iMedia]);
}
}
}
System.out.println("vor dem add");
HashPrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
System.out.println(map);
//System.out.println(map.get("\\\\Xpws_mg\\HP LaserJet 5");
attributeSet.add(map.get("\\\\Xpws_mg\\HP LaserJet 5").get(0));
// (first tray for this printer, for example)
System.out.println("nach dem add");
PrinterJob printJob = PrinterJob.getPrinterJob();
try {
printJob.print(attributeSet);
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
diese Zeile will Ihren Zweck nicht erfüllen
Code:
attributeSet.add(map.get("\\\\Xpws_mg\\HP LaserJet 5").get(0));
wenn man sich die Zeile ausgeben lässt ist sie immer null.
egal welchen Drucker ich nehme.
Ich hab auch mal paar println eingebaut damit man weiss was passiert.
nach dem link sollte das eigentlich so funktionieren.
Ich hoffe mir kann da irgendwer helfen
PS:diesen lösungsweg kenne ich aber er bringt mir nichts da ich auch drucker mit n trays ansprechen muss und diese einzeln auswählen muss
Code:
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
printRequestAttributeSet.add(MediaTray.BOTTOM); // oder TOP, BOTTOM usw.
gruss
MScalli