Note that there are some explanatory texts on larger screens.

plurals
  1. POPassing Parameters to the print method (JAVA)
    primarykey
    data
    text
    <p>I need some help with my code. What i need it to do is everytime a page is added to the Java Book different data needs to be on the page every time. I've tried it a number of different ways and i just can't work it out! </p> <p>Here's my code:</p> <pre><code>dataBase data = new dataBase(); int userCountAmount = data.getAmountOfUsers(); Book bk = new Book(); PrinterJob PJ = PrinterJob.getPrinterJob(); String[] pupilName = new String[userCountAmount]; String[] parentsName = new String[userCountAmount]; int parCount = 0; int pupCount = 0; public void print2() { System.out.println(pupilName.length); System.out.println(parentsName.length); System.out.println(userCountAmount); String[] custData = processData(data.getAllCustomers()); PageFormat portrait = PJ.defaultPage(); int pupNameCount = 0; int parNameCount = 0; portrait.setOrientation(PageFormat.PORTRAIT); for (int i = 0; i &lt; userCountAmount; i++) { pupilName[i] = custData[pupNameCount]; parentsName[i] = custData[parNameCount]; System.out.println(custData[pupNameCount] + " " + custData[parNameCount]); pupNameCount = pupNameCount + 13; parNameCount = parNameCount + 13; bk.append(new IntroPage(), PJ.defaultPage()); parCount++; pupCount++; System.out.println(parCount+" " + pupCount); } // setWindow(); //PageFormat PF = PJ.pageDialog(PJ.defaultPage()); PJ.setPageable(bk); // PJ.setPrintable((Printable) this); boolean doPrint = PJ.printDialog(); //JOptionPane.showMessageDialog(null, doPrint); if (doPrint) { try { PJ.print(); } catch (PrinterException ex) { JOptionPane.showMessageDialog(null, ex.getMessage()); } } } private class IntroPage implements Printable { /** * Method: print * &lt;p&gt; * * @param g * a value of type Graphics * @param pageFormat * a value of type PageFormat * @param page * a value of type int * @return a value of type int */ public int print(Graphics g, PageFormat pageFormat, int page) { //--- Create the Graphics2D object Graphics2D g2d = (Graphics2D) g; //--- Translate the origin to 0,0 for the top left corner g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); //--- Set the default drawing color to black and get date g2d.setPaint(Color.black); DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); Date date = new Date(); //draw tables g2d.setPaint(Color.darkGray); Rectangle2D.Double invoiceOut = new Rectangle2D.Double(10, 200, 400, 280); Rectangle2D.Double invoiceDesc = new Rectangle2D.Double(10, 200, 200, 280); Rectangle2D.Double invoiceSess = new Rectangle2D.Double(10, 200, 260, 280); Rectangle2D.Double invoiceRate = new Rectangle2D.Double(10, 200, 330, 280); Rectangle2D.Double invoiceTitle = new Rectangle2D.Double(10, 200, 400, 20); Rectangle2D.Double totalAmount = new Rectangle2D.Double(340, 480, 70, 20); g2d.draw(invoiceOut); g2d.draw(invoiceDesc); g2d.draw(invoiceSess); g2d.draw(invoiceRate); g2d.draw(invoiceTitle); g2d.draw(totalAmount); //table title strings String descrp = "Description:"; String sesh = "Sessions:"; String rate = "Rate:"; String amount = "Amount:"; String titleText = "INVOICE"; String totalAmountString = "Total Amount:"; //Address Strings String printDate = "Print Date: " + String.valueOf(dateFormat.format(date)); String line1Text = "16 here now"; String line2Text = "There"; String line3Text = "Thisshire"; String line4Text = "GU66 74S"; String phoneText = "Phone: 010101 0101010"; String mobileText = "Mobile: 010101 010101"; String emailText = "Email: here@there.com"; //to/for strings String toString = "To: " + pupilName[pupCount-1]; String forString = "For: " + parentsName[parCount-1]; //footer strings String footerLine1 = "Please pay by cash or cheque made payable to " + " " + " or by Internet Banking."; String footerBold1 = "Mrs Bob Bobbins"; String iBankingDet = "company Sort code: " + " " + " Account Number: " + " " + "put your name as"; String bSortCode = "00-00-00"; String bAccountNumber = "0000000"; String iBankingDet2 = "reference!"; String noticeAlert = "Please Pay by latest on the first lesson of Term/Series."; String customNotice = "** Thank you for your custom **"; //Set fonts Font textFont = new Font("Tahoma", Font.PLAIN, 10); Font toForFont = new Font("Tahoma", Font.BOLD, 10); Font addressFont = new Font("Tahoma", Font.PLAIN, 8); Font titleFont = new Font("Tahoma", Font.BOLD, 24); Font textFontBold = new Font("Tahoma", Font.BOLD, 10); //set table titles g2d.setPaint(Color.GRAY); g2d.setFont(addressFont); g2d.drawString(descrp, 15, 215); g2d.drawString(sesh, 215, 215); g2d.drawString(rate, 275, 215); g2d.drawString(amount, 345, 215); g2d.drawString(totalAmountString, 285, 495); //set title g2d.setFont(titleFont); g2d.drawString(titleText, 250, 20); //set address g2d.setFont(addressFont); g2d.drawString(line1Text, 350, 40); g2d.drawString(line2Text, 350, 50); g2d.drawString(line3Text, 350, 60); g2d.drawString(line4Text, 350, 70); g2d.drawString(phoneText, 350, 80); g2d.drawString(mobileText, 350, 90); g2d.drawString(emailText, 350, 100); g2d.drawString(printDate, 350, 120); //draw to and for strings g2d.setPaint(Color.darkGray); g2d.setFont(toForFont); g2d.drawString(toString, 10, 160); g2d.drawString(forString, 180, 160); //draw footer onto page g2d.setPaint(Color.black); g2d.setFont(textFont); g2d.drawString(footerLine1, 10, 520); g2d.setFont(textFontBold); g2d.drawString(footerBold1, 220, 520); g2d.setFont(textFont); g2d.drawString(iBankingDet, 10, 545); g2d.setFont(textFontBold); g2d.drawString(bSortCode, 165, 545); g2d.drawString(bAccountNumber, 295, 545); g2d.setFont(textFont); g2d.drawString(iBankingDet2, 10, 555); g2d.setFont(textFontBold); g2d.drawString(noticeAlert, 95, 575); g2d.drawString(customNotice, 145, 595); //add image to invoice Image img; img = new ImageIcon(this.getClass().getResource("logo.png")).getImage(); g2d.drawImage(img, -10, -10, 180, 84, null); return (PAGE_EXISTS); } } </code></pre> <p>So basically, all i need to do is pass additional parameters to the print method, but this is impossible! It wouldn't implement the print class other wise! </p> <p>I've tried substituting arrays and a lot more, i can't think of anything else!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload