java打印jtable_用Java打印JTable和其他文本字段

在Java桌面应用程序开发中,遇到一个问题:需要将带有子总计和总字段的发票及JTable数据一同打印在同一页。目前JTable和总计信息分别打印在不同页。寻求解决方案,期望能使用Java内置的打印服务,而不是引入报告引擎。已尝试的代码中,JLabel和JTextField被添加到Printable对象,但未能正确格式化在同一页面打印。
摘要由CSDN通过智能技术生成

我正在为我的项目工作开发一个

Java桌面应用程序.我需要打印一张包含子总计和总字段的发票以及来自JTable的表格数据.我能够打印表格,但不能在同一页面打印.即JTable打印在第一页和小计,总打印在下一页.有没有办法在同一页面中打印两个数据.我不想使用报告引擎.只需使用内置的java打印服务.请指导我.

我想要的打印格式:

p81DR.png

下图显示了GUI

b4c3b17f6042b047f5cfcbef5e37417e.png

下图显示了我到目前为止的报告.它的格式不正确.请帮忙

abea51eeec94ec27cfdd3bb4660779c5.png

代码如下

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); }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值