मुझे अपने कोड के साथ कोई समस्या है जो ग्राफिक्स ऑब्जेक्ट को प्रिंट करता है। यह सटीक कोड एक हफ्ते पहले काम करता था और अब जब मैं नेटबीन्स में फ़ाइल खोलता हूं तो यह निष्पादन पर दुर्घटनाग्रस्त हो जाता है।ग्राफिक्स ऑब्जेक्ट को प्रिंट करना
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 मुझसे कहता है कि मैं सार विधि प्रिंट (ग्राफिक्स, PageFormat, पूर्णांक) ओवरराइड नहीं कर रहा हूँ जब मैं कर रहा हूँ और @Override मुझसे कहता है यह कुछ भी नहीं कर रही है:
इस कोड है।
इसके अलावा लाइन:
Graphics2D g2d = (Graphics2D)g;
त्रुटियों बाहर हुए कहा कि यह ग्राफिक्स प्रकार परिवर्तित नहीं कर सकते। मेरे पास कोई विचार नहीं है कि मैं क्या गलत कर रहा हूं क्योंकि यह सटीक कोड एक हफ्ते पहले काम करता था।
आपको 'ग्राफिक्स' ऑब्जेक्ट कहां मिल रहा है? क्या आप सीधे 'ग्राफिक्स 2 डी' ऑब्जेक्ट प्राप्त कर सकते हैं और पैरामीटर के रूप में स्वीकार करने के लिए विधि सेट कर सकते हैं? – Pietu1998
सुनिश्चित नहीं है कि यह आपकी समस्या का स्रोत है, लेकिन आपके पास 'g' से' g2d' तक अनचेक कास्ट है। भले ही आपका कोड बदल गया हो, फिर भी यह एक सप्ताह पहले की तुलना में अलग-अलग इनपुट प्राप्त कर रहा है। मैं कम से कम एक 'अगर (जी उदाहरण g2d)' कास्ट से पहले जोड़ना होगा; आप 'g' के रन-टाइम प्रकार की जांच करने के लिए ब्रेकपॉइंट भी सेट कर सकते हैं। – killscreen
मैंने आपके द्वारा वर्णित किसी भी मुद्दे के बिना बस अपना कोड संकलित किया है। मुझे लगता है कि हमें और जानकारी चाहिए ... – DannyMo