我正在为我的项目工作开发一个
Java桌面应用程序.我需要打印一张包含子总计和总字段的发票以及来自JTable的表格数据.我能够打印表格,但不能在同一页面打印.即JTable打印在第一页和小计,总打印在下一页.有没有办法在同一页面中打印两个数据.我不想使用报告引擎.只需使用内置的java打印服务.请指导我.
我想要的打印格式:
下图显示了GUI
下图显示了我到目前为止的报告.它的格式不正确.请帮忙
代码如下
JLabel title = new JLabel();
title.setText("Invoice");
title.setBounds(300, 200, 80, 30);
JTextField subTotal = new JTextField();
subTotal.setText("Sub Total : Rs. " + SubTotal.getText());
subTotal.setBounds(400, 200, 150, 30);
MyPrintable prt = new MyPrintable();
prt.addComponent(title);
prt.addComponent(billTable); //billTable is the JTable
prt.addComponent(subTotal);
prt.printIt();
以下是我的Printable课程
class MyPrintable implements Printable
{
private ArrayList items;
public MyPrintable()
{
items = new ArrayList<>();
}
@Override
public int print(Graphics g, PageFormat pf, int page) throws PrinterException
{
if(page > 0) return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)g;
g2.translate(pf.getImageableX(), pf.getImageableY());
for(JComponent item : items)
{
item.setLayout(null);
// item.setBounds(500, 500, 200, 200);
item.printAll(g);
g2.translate(0, item.getHeight());
}
return Printable.PAGE_EXISTS;
}
public void printIt()
{
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();;
PrinterJob job = PrinterJob.getPrinterJob();
try
{
job.setPrintable(this);
if(job.printDialog(attributes))
job.print(attributes);
}
catch (PrinterException e)
{
JOptionPane.showMessageDialog(null, e);
}
}
public void addComponent(JComponent component) { items.add(component); }
}