Dank Eurer Hilfe steht meine Druckfunktion wie folgt:
Jetzt habe ich nur noch folgende Frage:
Da meine Reiter aus dem JTabbedPane sehr groß sind (Inhaltsmäßig), passen diese nicht auf eine Seite. Wie kann ich den Seitenumbruch formatieren?
Code:
class druckenListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
pj = PrinterJob.getPrinterJob();
pj = PrinterJob.getPrinterJob();
try
{
if (pj.printDialog())
{
paper = new Paper();
paper.setSize(594.936, 841.536); // Set to A4 size.
paper.setImageableArea(30, 30, 530, 780);//set margins
pageFormat = new PageFormat();
pageFormat.setPaper(paper);
size = lizenzPane.getSize();
hauptpanel.setSize(size);
formular = new Formular_Lizenzbestimmung(lizenzPane);
pj.setPrintable(formular, pageFormat);
pj.print();
}
}
catch (PrinterException ex)
{
ex.printStackTrace();
}
}
}
Code:
class Formular_Lizenzbestimmung implements Printable
{
private Container container;
private int index = -1;
private Rectangle page = new Rectangle(0, 0, 0, 0);
Formular_Lizenzbestimmung(Container container)
{
this.container = container;
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
{
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
int iWidth = (int) pageFormat.getImageableWidth();
int iHeight = (int) pageFormat.getImageableHeight();
double scaleFactor = (double) iWidth / (double) container.getWidth();
while (index < pageIndex)
{
if (pageIndex > container.getHeight() * scaleFactor / iHeight)
{
return NO_SUCH_PAGE;
}
page.y += page.height;
page.width = (int) (iWidth / scaleFactor);
page.height = (int) (iHeight / scaleFactor);
index++;
}
g2d.scale(scaleFactor, scaleFactor);
g2d.translate(0, -page.y);
g2d.clip(page);
container.print(g2d);
return PAGE_EXISTS;
}
}
Jetzt habe ich nur noch folgende Frage:
Da meine Reiter aus dem JTabbedPane sehr groß sind (Inhaltsmäßig), passen diese nicht auf eine Seite. Wie kann ich den Seitenumbruch formatieren?