gpt4 book ai didi

java - 将参数传递给打印方法(JAVA)

转载 作者:行者123 更新时间:2023-12-01 15:39:22 29 4
gpt4 key购买 nike

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

这是我的代码:

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() 添加参数,因为它必须实现该接口(interface)。

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

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

关于java - 将参数传递给打印方法(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8324388/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com