0
データを列に印刷するアプリケーションを作成しようとしています。私の問題は、これは、文書はば完全に間違っているなることを意味...ラベルを印刷するJava、ループ(?)
誰もがこのことについていくつかのアイデアを持っていますか?... job.setPrintableが複数回実行されることですか
たぶん、あなたは、私はこのコードを改善することができますどのように(?)の他のいくつかのアイデアを持っている...
は私が私の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