我想设置一个PrinterJob
来打印包含多个组件(JList
,JTextArea
等等的文本的文档。)。
到目前为止我已经这样做了:
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
的内容合并到一个文档中进行打印。
由于