如何从Java应用程序发送JTable数据到打印作业?

时间:2011-05-26 09:47:46

标签: java swing printing jtable

在我的应用程序中,我有一个带数据的JTable,我需要添加一个打印按钮,它可以在打印纸上的表格中添加打印数据的功能(发送打印机作业),如何使用{{ 1}}课程? 我一直在寻找示例,但我找不到一个从JComponent打印一些数据的简单示例。

这是我找到的网站之一:http://java.sun.com/products/java-media/2D/forDevelopers/sdk12print.html。 但我不确定应该关注什么才能理解打印的工作原理(页面格式等)。

由于

2 个答案:

答案 0 :(得分:3)

我通过将整个表格绘制到打印机页面,相应地调整大小等来解决问题。因为打印实际上只是绘制到不同的接收器。

@Saher please check my answer to other question我提供的链接对我有用,了解API如何工作/可以应用。

修改

请特别检查教程。 2。 我这样做的方式是我有一个MyPrintUtilityclass,它实现了Printable接口。 它的构造函数采用我想要打印的组件。当它采用组件时,它计算它将采用多少页面并存储页面结束点。然后我有一个我调用它的方法来初始化打印对话框。

    public void print()
    {
        PrinterJob printJob = PrinterJob.getPrinterJob();
        if(printJobName != null)
            printJob.setJobName(printJobName);
        printJob.setPrintable(this);    
        if(printJob.printDialog())
            try
            {
                //for faster printing, turn off double buffering
                disableDoubleBuffering(componentToPrint);
                System.out.println("Calling PrintJob.print()");
                printJob.print(new HashPrintRequestAttributeSet());
                System.out.println("End PrintJob.print()");
            }catch(PrinterException pe)
            {
                System.out.println("Error printing: " + pe);
            }finally//whatever happend (exception or not) turn back on the double buffering
            {
                enableDoubleBuffering(componentToPrint);
            }
    }

在Printable界面的public int print(Graphics g, PageFormat pf, int pageIndex)方法中,我翻译图形,相应地剪切每个页面的表格。

需要更多资源检查:

http://www.java2s.com/Code/Java/2D-Graphics-GUI/PrintinJavaMultipage.htm ---在很多页上打印

http://download.oracle.com/javase/tutorial/2d/printing/gui.html ---打印GUI组件。

http://www.sideofsoftware.com/print_preview_tutorial.htm ---打印预览教程

http://www.java-tips.org/java-se-tips/java.awt.print/print-the-text-file-and-print-preview-them.html ---一个如何预览和打印文本文件的绝佳示例。

<强> EDIT2:

You must seriously read this one.这里的作者解释了如何分割许多页面以及如何翻译图形和移动剪辑等。

答案 1 :(得分:2)

嗯,

今天关于打印{6}的Java 6 Oracle tutotial包含http://download.oracle.com/javase/tutorial/2d/printing/index.html http://download.oracle.com/javase/7/docs/api/javax/swing/JTable.html#print%28%29中描述的JTable Tutorial,包括Runnable Examples,然后你必须搜索(在这个论坛上)正确{ {3}}

例如

PrintRequestAttributeSet set = new HashPrintRequestAttributeSet();
set.add(OrientationRequested.LANDSCAPE);
resultFxTable.print(JTable.PrintMode.FIT_WIDTH, header, footer, false, set, false);

注意:我不确定是否可以正确设置PrintHeader的Font,FontSize和FOntColor以及JTable打印的PrintFooter