PrinterJob - 从多个组件打印

时间:2015-09-05 15:09:38

标签: java printing

我想设置一个PrinterJob来打印包含多个组件(JListJTextArea等等的文本的文档。)。

到目前为止我已经这样做了:

class PrintSupport implements Printable {

    private Component print_component;
    private List <Component> print_component_list;

    public static void printComponent(Component c) {
        new PrintSupport(c).doPrint();
    }
    public static void printComponentList(List <Component> cList) {
        new PrintSupport(cList).doPrint();
    }

    public PrintSupport(Component comp) {
        this.print_component = comp;
    }
    public PrintSupport(List <Component> compList) {
        this.print_component_list = compList;
    }

    public void doPrint() {
        PrinterJob printJob = PrinterJob.getPrinterJob();
        printJob.setPrintable(this);
        if (printJob.printDialog()) {
            try {
                printJob.print();
            } catch (PrinterException pe) {
                System.out.println("Error printing: " + pe);
            }
        }
    }

    @Override
    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());
            disableDoubleBuffering(print_component);
            print_component.paint(g2d);
            enableDoubleBuffering(print_component);
            return (PAGE_EXISTS);
        }
    }

    public static void disableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(false);
    }

    public static void enableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(true);
    }

}

但是当我调用printComponentList方法时如何才能打印每个Component文字? 我想将每个Component的内容合并到一个文档中进行打印。

由于

0 个答案:

没有答案