peshay
Mitglied
hi, ich benötige etwas hilfe beim drucken von einem JTable, bis jetzt hab ich folgendes (hauptsächlich aus einem buch abgetippt und abgeändert):
die funktion zum drucken:
ein veränderter JTable der das drucken ermöglicht:
der druckt sogar mein JTable, nur hab ich das problem, dass wenn ich nicht sage das er von Seite 1 bis 1 drucken soll das er dann 9999 Seiten druckt..
außerdem ist der table nicht ganz auf dem blatt drauf, lässt sich des irgendwie skalieren? ich hab schon versucht querformat zu drucken, aber das hat er nicht gemacht...
Ansonsten hätte ich noch gern die tableheads drüber stehen und (wenns nich zuviel umstand macht) ein label in dem gesamtstunden vom table drinstehn mit drauf.. was aber fürs erste nich so wichtig ist...
vielen dank schonmal für eure antworten
die funktion zum drucken:
Code:
public void drucken()
{
PrinterJob druckJob = PrinterJob.getPrinterJob();
druckJob.setPrintable(table);
PageFormat seitenFormat = druckJob.pageDialog(druckJob.defaultPage());
if(druckJob.printDialog())
{
try
{
druckJob.print();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, "Fehler beim drucken.");
}
}
}
ein veränderter JTable der das drucken ermöglicht:
Code:
class printtable extends JTable implements Printable
{
public int print(Graphics g, PageFormat pf, int pi) throws PrinterException
{
if(pi >=1)
return Printable.NO_SUCH_PAGE;
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
paint(g2d);
return Printable.PAGE_EXISTS;
}
}
der druckt sogar mein JTable, nur hab ich das problem, dass wenn ich nicht sage das er von Seite 1 bis 1 drucken soll das er dann 9999 Seiten druckt..
außerdem ist der table nicht ganz auf dem blatt drauf, lässt sich des irgendwie skalieren? ich hab schon versucht querformat zu drucken, aber das hat er nicht gemacht...
Ansonsten hätte ich noch gern die tableheads drüber stehen und (wenns nich zuviel umstand macht) ein label in dem gesamtstunden vom table drinstehn mit drauf.. was aber fürs erste nich so wichtig ist...
vielen dank schonmal für eure antworten