将参数传递给打印方法(JAVA) [英] Passing Parameters to the print method (JAVA)

查看:84
本文介绍了将参数传递给打印方法(JAVA)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码需要一些帮助.我需要做的是每次将页面添加到Java Book时,每次都需要在页面上添加不同的数据.我已经尝试了许多不同的方法,但我无法解决!

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!

这是我的代码:

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 < 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
     * <p>
     *
     * @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);
    }
}

因此,基本上,我需要做的就是将其他参数传递给print方法,但这是不可能的!它不会以其他方式实现print类!

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!

我已经尝试替换数组等等,我想不起其他任何事情了!

I've tried substituting arrays and a lot more, i can't think of anything else!

推荐答案

您不能向print()添加参数,因为它必须实现接口.

You can't add arguments to the print() as it must implement the interface.

不过,您可以向构造函数添加任意数量的参数,并且可以在您的方法中使用这些参数.

However you can add any number of arguments to the constructor, and these can be used in your method.

bk.append(new IntroPage(arg1, arg2, arg3), PJ.defaultPage());

这篇关于将参数传递给打印方法(JAVA)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆