0
我正嘗試創建一個應用程序,以列的形式打印數據。我的問題是,job.setPrintable運行多次......這意味着,該文件成爲完全以錯誤的...打印標籤Java,循環(?)
有誰對此的一些想法?
也許你有我怎樣才能使這個代碼更好一些其他的想法(?)...
謝謝你在先進
我有例如在我的ArrayList中10項指標..當我運行應用程序,它會在我的文檔創建20列...其中10是完全以空和做只是佔用空間...
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);
}
}
}
'//這裏沒有什麼可以看到的'實際上,如果你面對一個異常,你必須**看到它不會忽略它! – Frakcool