+ void startPrinting()\r
+ {\r
+ Thread thread = new Thread(this);\r
+ thread.start();\r
+ }\r
+\r
+ // put printing in a thread to avoid painting problems\r
+ public void run()\r
+ {\r
+ PrinterJob printJob = PrinterJob.getPrinterJob();\r
+ PageFormat pf = printJob.pageDialog(printJob.defaultPage());\r
+\r
+ printJob.setPrintable(this, pf);\r
+ if (printJob.printDialog())\r
+ {\r
+ try\r
+ {\r
+ printJob.print();\r
+ }\r
+ catch (Exception PrintException)\r
+ {\r
+ PrintException.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+\r
+\r
+ public int print(Graphics pg, PageFormat pf, int pi) throws PrinterException\r
+ {\r
+\r
+ pg.setFont(font);\r
+ pg.translate((int)pf.getImageableX(), (int)pf.getImageableY());\r
+ int pwidth = (int) pf.getImageableWidth();\r
+ int pheight = (int) pf.getImageableHeight();\r
+\r
+ int noPages = getHeight() / pheight;\r
+ if(pi>noPages)\r
+ return Printable.NO_SUCH_PAGE;\r
+\r
+\r
+ if (pwidth > getWidth())\r
+ pwidth = getWidth();\r