PrinterJob job = PrinterJob.getPrinterJob();
    job.setJobName("jPanel2");
    job.setPrintable(new Printable() {
        public int print(Graphics pg, PageFormat pf, int pageNum) {
            if (pageNum > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics2D g2 = (Graphics2D) pg;
            g2.translate(pf.getImageableX(), pf.getImageableY());
            jPanel2.paint(g2);`enter code here`
            return Printable.PAGE_EXISTS;
        }
    });

我已经使用上面的代码来打印jPanel内容。但是我想打印jTable中存在的数据。我怎样才能做到这一点?

最佳答案

 public void printJavaComponent() {
PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName("Print Java Component");

job.setPrintable (new Printable() {
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
        if (pageIndex > 0) {
            return(NO_SUCH_PAGE);
        } else {
            Graphics2D g2d = (Graphics2D)g;
            g2d.translate(pageFormat.getImageableX(),
            pageFormat.getImageableY());

            component_name_to_be_printed.paint(g2d);

            return(PAGE_EXISTS);
        }
    }
});

if (job.printDialog()) {
    try {
        job.print();
    } catch (PrinterException e) {
        System.err.println(e.getMessage());
    }
}

}

请尝试此代码,我认为它可以为您提供帮助。

10-08 01:39