Мне нужно напечатать несколько страниц в приложении, но когда я пытаюсь их распечатать, я получаю только одну страницу, напечатанную, например, одну страницу, напечатанную 5 раз.Печать нескольких страниц с возможностью печати на Java
Я поставил код ниже:
MyPrintableTable mpt = new MyPrintableTable();
PrinterJob job = PrinterJob.getPrinterJob();
//PageFormat pf = job.defaultPage();
job.setPrintable(mpt);
job.printDialog();
try
{
job.print();
}
catch (PrinterException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
"MyPrintableTable" Класс:
class MyPrintableTable implements Printable
{
public int print(Graphics g, PageFormat pf, int pageIndex)
{
if (pageIndex != 0)
return NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Serif", Font.PLAIN, 16));
g2.setPaint(Color.black);
int x = 100;
int y = 100;
for(int i = 0; i < sTable.size(); i++)
{
g2.drawString(sTable.get(i).toString(), x, y);
y += 20;
}
return PAGE_EXISTS;
}
}
Если я изменяю "! PageIndex = 0" состояние, я больше напечатанных страниц, но все с тот же текст.
Я хочу напечатать весь текст, который имеет длину в три страницы, но я могу напечатать только первый, o напечатать три раза первый.
Может кто-нибудь мне помочь?
Почему вы не используете 'pageIndex' для выбора данных для печати? См. [Печать документа с несколькими страницами] (http://docs.oracle.com/javase/tutorial/2d/printing/set.html) –
Я вижу это за два часа до этого, но я не знаю, как его использовать мой код, вы можете мне помочь? –
Вам необходимо выяснить, какие данные принадлежат этой странице, и соответственно изменить свой цикл. Возможно, что-то вроде 'for (int i = pageIndex * linesPerPage; i