Udskrivning af JTable til printer
Hej,Jeg har en JTable som jeg ønsker at udskrive. Denne udskrivning vil i mange tilfælde strække sig over mange sider - men jeg kan ikke finde ud af at skifte side, når jeg printer, istedet får jeg bare udskrevet en side. Hvordan udskriver jeg indholdet fra en JTable - og findes der lettere metoder end den som er angivet nedenfor:
/****************************************
public class Print implements ActionListener,Runnable,Printable
{
private Language lang;
private Thread PRINTThread;
public Print()
{
}
public void actionPerformed(ActionEvent e)
{
Sheet mysheet = Sheet.instance();
//PrintUtilities.printComponent(Sheet.instance());
if(!mysheet.isEmpty())
{
if (PRINTThread == null)
{
PRINTThread= new Thread(this, "PRINTThread");
PRINTThread.start();
}
}
else
{
lang = Language.instance();
new MsgBox(lang.getText("info"),lang.getText("noprint"),false);
}
}
public void run()
{
PrinterJob printJob = PrinterJob.getPrinterJob ();
if (printJob.printDialog())
{
try
{
Book book = new Book ();
PageFormat documentPageFormat = new PageFormat ();
documentPageFormat.setOrientation (PageFormat.PORTRAIT);
book.append (this,documentPageFormat);
printJob.setPageable (book);
printJob.print();
}
catch (Exception PrintException)
{
PrintException.printStackTrace();
PRINTThread = null;
}
PRINTThread = null;
}
}
public int print(Graphics g, PageFormat pf, int pageIndex)
{
int response = NO_SUCH_PAGE;
Sheet sheet = Sheet.instance();
if(!sheet.isEmpty())
{
Firm firm;
int lines_on_page = 25;
int pages = 0;
int totalRows = 0;
//--- Create the Graphics2D object
Graphics2D g2d = (Graphics2D) g;
//--- Translate the origin to 0,0 for the top left corner
g2d.translate (pf.getImageableX(), pf.getImageableY());
//--- Set the drawing color to black
g2d.setPaint (Color.black);
Font f = new Font( "Arial", Font.PLAIN , 10 );
g2d.setFont(f);
System.out.println("pageIndex:"+pageIndex);
lang = Language.instance();
totalRows = sheet.getRowCount();
System.out.println("totalRows:"+totalRows);
pages = totalRows/lines_on_page;
System.out.println("pages:"+pages);
System.out.println("Printable.NO_SUCH_PAGE:"+Printable.NO_SUCH_PAGE);
if (pageIndex >= pages)
{
response = Printable.NO_SUCH_PAGE;
}
else
{
float lineHeight = f.getSize2D();
float charWidth = Float.parseFloat("7");
float cmaxName = sheet.MaxNameLength();
float cmaxAdress = sheet.MaxAdressLength();
float cmaxDistrict = sheet.MaxDistrictLength();
float cmaxZip = sheet.MaxZipLength();
float cmaxPhone = sheet.MaxPhoneLength();
float cmaxCVR = sheet.MaxCVRLength();
float maxWidth = (cmaxName + cmaxAdress + cmaxDistrict + cmaxZip + cmaxPhone + cmaxCVR) * charWidth;
float colName = charWidth;
float colAdress = colName + cmaxAdress * charWidth;
float colZip = colAdress + cmaxZip * charWidth;
float colDistrict = colZip + cmaxDistrict * charWidth;
float colPhone = colDistrict + cmaxPhone * charWidth;
float colCVR = colPhone + cmaxCVR * charWidth;
int y = 16;
Point autoScrol = new Point(0,0);
g2d.drawString(lang.getText("firm"), (int)(colName + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString (lang.getText("adress"), (int)(colAdress + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString (lang.getText("zip"), (int)(colZip + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString (lang.getText("post"), (int)(colDistrict + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString (lang.getText("phone"), (int)(colPhone + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString (lang.getText("cvr"), (int)(colCVR + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawLine((int)(colName + autoScrol.getX()), (int)(y - autoScrol.getY()), (int)(maxWidth + autoScrol.getX()),(int)(y + autoScrol.getY()));
y += lineHeight;
for(int i = 0; sheet.hasNext(); i++)
{
firm = (Firm)sheet.next();
g2d.drawString(firm.getName(), (int)(colName + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString(firm.getAdress(), (int)(colAdress + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString(firm.getZipcode(), (int)(colZip + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString(firm.getDistrict(), (int)(colDistrict + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString(firm.getPhone(), (int)(colPhone + autoScrol.getX()), (int)(y + autoScrol.getY()));
g2d.drawString(firm.getCVRnumber(), (int)(colCVR + autoScrol.getX()), (int)(y + autoScrol.getY()));
y += lineHeight;
}
response = Printable.PAGE_EXISTS;
}
}
System.out.println("response:"+response);
return response;
}
}
*******************************************/
