Ich versuche eine Anwendung zu erstellen, die Daten in Spalten druckt. Mein Problem ist, dass die job.setPrintable läuft mehrmals ... Das bedeutet, dass das Dokument totaly falsch wird ...Etiketten drucken Java, Loops (?)
Hat jemand ein paar Ideen dazu?
Vielleicht haben Sie einige andere Ideen, wie ich diesen Code besser machen kann (?) ...
Danke erweitern in
ich zum Beispiel habe 10 Indizes in meiner Arraylist .. . Wenn ich die Anwendung ausführen, wird es 20 Spalten in meinem Dokument erstellen ... 10 von ihnen total leer ist und sie nur Platz wegnehmen ...
private final int PAGE_WIDTH = Math.round(MediaSize.ISO.A4.getX(MediaSize.MM));
private final int PAGE_HEIGHT = Math.round(MediaSize.ISO.A4.getY(MediaSize.MM)/8);
private PrinterJob job = PrinterJob.getPrinterJob();
private Graphics2D column;
private Font font = new Font("Serif", Font.BOLD, 9);
private int writeOnRow = 0;
private int pageRow = 0;
private int columnSpace = 4;
private int itemsInRow = 3;
private int itemCurrentRow = 0;
public Printer(final ArrayList<Customers> resultAsList) {
resultAsList.remove(0);
job.setPrintable(new Printable() {
public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
if (pageIndex > 0) {
return NO_SUCH_PAGE;
}
column = (Graphics2D)g;
column.translate(pf.getImageableX(), pf.getImageableY());
column.setFont(font);
for (Customers c : resultAsList) {
String line =
c.getName() + "\n" +
c.getAddress() + "\n" +
c.getPostcode() + " " + c.getCity();
//DATA, COLUMN, ROW
column.drawString(c.getName(), columnSpace, writeOnRow += column.getFontMetrics().getHeight() + 2);
column.drawString(c.getAddress(), columnSpace, writeOnRow += column.getFontMetrics().getHeight() + 2);
column.drawString(c.getPostcode() + " " + c.getCity(), columnSpace, writeOnRow += column.getFontMetrics().getHeight() + 2);
if (itemCurrentRow == itemsInRow) {
pageRow += PAGE_HEIGHT;
itemCurrentRow = 0;
columnSpace = 4;
itemCurrentRow++;
} else {
writeOnRow = pageRow;
columnSpace += PAGE_WIDTH;
itemCurrentRow++;
}
writeOnRow += pageRow;
laps++;
}
return PAGE_EXISTS;
}
});
boolean doPrint = job.printDialog();
if (doPrint) {
try {
job.print();
} catch (PrinterException ex) {
System.out.println(ex);
}
}
}
'// Nichts zu sehen hier tatsächlich, wenn Sie eine Ausnahme vor sich haben ** Sie ** sehen müssen, es nicht zu ignorieren! – Frakcool