Swing:How to include Title in printed page in swing
This are the code to print table...can anyone give any idea
private void btnPrintActionPerformed(ActionEvent evt){
System.out.println("action");
collapseTableData();
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
printJob.printDialog();
try {
printJob.print();
} catch (Exception PrintException) { }
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.black);
int fontHeight=g2.getFontMetrics().getHeight();
int fontDesent=g2.getFontMetrics().getDescent();
//leave room for page number
double pageHeight = pageFormat.getImageableHeight()-fontHeight;
double pageWidth = pageFormat.getImageableWidth();
double tableWidth = (double)tblProgram.getColumnModel().getTotalColumnWidth();
double scale = 1;
if (tableWidth >= pageWidth) {
scale = pageWidth / tableWidth;
}
double headerHeightOnPage = tblProgram.getTableHeader().getHeight()*scale;
double tableWidthOnPage = tableWidth*scale;
double oneRowHeight = (tblProgram.getRowHeight()+ tblProgram.getRowMargin())*scale;
int numRowsOnAPage = (int)((pageHeight-headerHeightOnPage)/oneRowHeight);
double pageHeightForTable = oneRowHeight * numRowsOnAPage;
int totalNumPages = (int)Math.ceil(((double)tblProgram.getRowCount()) / numRowsOnAPage);
if(pageIndex>=totalNumPages) {
return NO_SUCH_PAGE;
}
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
//bottom center
g2.drawString("Page: " +(pageIndex+1), (int)pageWidth/2-35, (int)(pageHeight
+fontHeight-fontDesent));
g2.drawString("Ilmu Tools For Uni ",
(int)pageWidth/2-35, (int)(pageHeight
+fontHeight-fontDesent));
g2.translate(0f,headerHeightOnPage);
g2.translate(0f,-pageIndex*pageHeightForTable);
//If this piece of the table is smaller than the size available,
//clip to the appropriate bounds.
if (pageIndex + 1 == totalNumPages) {
int lastRowPrinted = numRowsOnAPage * pageIndex;
int numRowsLeft = tblProgram.getRowCount() - lastRowPrinted;
g2.setClip(0, (int)(pageHeightForTable * pageIndex),
(int) Math.ceil(tableWidthOnPage), (int) Math.ceil(oneRowHeight * numRowsLeft));
}
//else clip to the entire area available.
else{
g2.setClip(0, (int)(pageHeightForTable*pageIndex), (int) Math.ceil(tableWidthOnPage),
(int) Math.ceil(pageHeightForTable));
}
g2.scale(scale,scale);
tblProgram.paint(g2);
g2.scale(1/scale,1/scale);
g2.translate(0f,pageIndex*pageHeightForTable);
g2.translate(0f, -headerHeightOnPage);
g2.setClip(0, 0,(int) Math.ceil(tableWidthOnPage), (int)Math.ceil(headerHeightOnPage));
g2.scale(scale,scale);
tblProgram.getTableHeader().paint(g2);
//paint header at top
return Printable.PAGE_EXISTS;
}

