62,614
社区成员
发帖
与我相关
我的任务
分享
这是实现了Printable的类里的print方法
public int print(Graphics g,PageFormat pf,int page)throws PrinterException
{
Graphics2D g2=(Graphics2D)g;
g2.setPaint(Color.black);
g2.translate(pf.getImageableX(),pf.getImageableY());
if (operation.equals("Preview"))
drawCropMarks(g2,pf);
g2.clip(new Rectangle2D.Double(0,0,pf.getImageableWidth(),pf.getImageableHeight()));
//打印表格线
printTableFrame(g2,pf);
//打印表格内数据
printTableData(g2,pf,page);
return (page>=pageCount)?Printable.NO_SUCH_PAGE:Printable.PAGE_EXISTS;
}
这是打印的方法 会调用到上边的方法
PrinterJob printJob=PrinterJob.getPrinterJob();
printJob.setPageable(makeBook("print"));
if (printJob.printDialog())
{
try
{
printJob.print();
}
catch(Exception ee)
{
}
}
public Book makeBook(String operation)
{
Book book=new Book();
if(PrintFM.tableData.printTableFrame)
{
//先在PrintFM.tableFrameObjects累积打印表格的对象
PrintFM.printTable(PrintFM.tableFrameObjects,PrintFM.tableData.rowNum, PrintFM.tableData.columnNum
, (int)PrintFM.pageFormat.getImageableWidth(),(int)PrintFM.pageFormat.getImageableHeight());
}
pageCount=PrintFM.printData(PrintFM.objects, PrintFM.tableData.rowNum, PrintFM.tableData.columnNum
, (int)PrintFM.pageFormat.getImageableWidth(),(int)PrintFM.pageFormat.getImageableHeight());
DrawOut drawout=new DrawOut(PrintFM.tableFrameObjects,PrintFM.objects,operation,pageCount);
if (pageCount<=1)
{
nextBtt.setEnabled(false);
preBtt.setEnabled(false);
}
book.append(drawout,PrintFM.pageFormat,pageCount);
return book;
}
public int print(Graphics g,PageFormat pf,int page)throws PrinterException
{
Graphics2D g2=(Graphics2D)g;
g2.setPaint(Color.black);
g2.translate(pf.getImageableX(),pf.getImageableY());
if (str.equals("Preview"))
drawCropMarks(g2,pf);
g2.clip(new Rectangle2D.Double(0,0,pf.getImageableWidth(),pf.getImageableHeight()));
g2.translate(0,-page*pf.getImageableHeight());
int pages=getPageCount(g2,pf);
return (page>=pages)?Printable.NO_SUCH_PAGE:Printable.PAGE_EXISTS;
}