I am having a problem with my code that prints a graphic. This exact code worked about a week ago, and now when I open the file in netbeans, it crashes on execution.
This is the code:
package Project; import java.awt.*; import javax.swing.*; import java.awt.print.*; public class Print implements Printable { private Component componentToBePrinted; public static void printComponent(Component c) { new Print(c).print(); } public Print(Component componentToBePrinted) { this.componentToBePrinted = componentToBePrinted; } public void print() { 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(componentToBePrinted); componentToBePrinted.paint(g2d); enableDoubleBuffering(componentToBePrinted); 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); } }
Netbeans tells me that I am not overriding the abstract print method (Graphics, PageFormat, int) when I am, and @Override tells me that it does nothing.
Also line:
Graphics2D g2d = (Graphics2D)g;
errors saying that it cannot convert chart types. I have no idea what I'm doing wrong, because this exact code worked a week ago.
source share