2009-04-15 14 views
19

मेरे पास JPanel है जिसमें चित्रों के साथ दो लेबल हैं। मुझे JPanel की इन सामग्री को मुद्रित करने की आवश्यकता है। कृपया मेरी मदद करें। मैं केवल इस JPanel की सामग्री कैसे मुद्रित कर सकते हैं, के रूप में मैं अपने JFrame पर विभिन्न घटकों है, लेकिन मैं सिर्फ इसJPanel मुद्रित करने के लिए की जरूरत है।मैं एक जेपीनेल की सामग्री कैसे प्रिंट कर सकता हूं?

धन्यवाद।

उत्तर

21

यहाँ किसी भी स्विंग घटक मुद्रित करने के लिए एक उदाहरण है।

यह Componentcomponenet_name कहा जाता है की सामग्री को प्रिंट करता है। सुनिश्चित करें कि यह इस विधि के लिए दृश्यमान है।

public void printComponenet(){ 

    PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setJobName(" Print Component "); 

    pj.setPrintable (new Printable() {  
    public int print(Graphics pg, PageFormat pf, int pageNum){ 
     if (pageNum > 0){ 
     return Printable.NO_SUCH_PAGE; 
     } 

     Graphics2D g2 = (Graphics2D) pg; 
     g2.translate(pf.getImageableX(), pf.getImageableY()); 
     componenet_name.paint(g2); 
     return Printable.PAGE_EXISTS; 
    } 
    }); 
    if (pj.printDialog() == false) 
    return; 

    try { 
     pj.print(); 
    } catch (PrinterException ex) { 
     // handle exception 
    } 
} 
+2

पृष्ठ के अनुसार आप घटक को कैसे स्केल कर सकते हैं ताकि यह फिट हो सके? –

+1

@ शेर क्या आपने कभी यह पता लगाया कि यह कैसे करें? धन्यवाद –

+0

क्या आप अधिक स्पष्टीकरण (टेक्स्ट) जोड़ सकते हैं? क्या कोई एक जेकंपोनेंट प्राप्त करना चाहता है और इस विधि को जोड़ना है या इसके साथ कोई क्या करेगा? धन्यवाद। –

4

यह Printable इंटरफेस (java.awt.print में) को लागू करने की जाएगी और निर्दिष्ट print विधि जोड़ने करने के लिए एक आसान तरीका (यह paint यहाँ -इन के लिए इसी तरह काम करता है, तो आप क्या घटकों आप मुद्रित पृष्ठ पर आकर्षित करने के लिए चाहते हो जाएगा निर्दिष्ट कर सकते हैं)। और जब आप वास्तव में पैनल की सामग्री को प्रिंट करना चाहते हैं, एक PrinterJob उदाहरण प्राप्त करने और अपने setPrintable विधि कॉल, उद्देश्य यह है कि Printable कार्यान्वित गुजर।

बस एक त्वरित अवलोकन है कि, हालांकि। मैं आगे की जानकारी के लिए Sun's tutorial on printing पर एक नज़र डालने की सलाह दूंगा।

0

बस संपादित करें और अपने फ्रेम, पैनल (जेपीनल 1) और बटन (प्रिंट) का नाम डालें। 'इस' JFrame वर्ग को संदर्भित करता है (यानी मेरी कक्षा फैली javax.swing.JFrame) सिर्फ अपने फ्रेम के संदर्भ के बजाय 'इस' रख दिया।

private void PritnActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    Toolkit tkp = jPanel1.getToolkit(); 
    PrintJob pjp = tkp.getPrintJob(this, null, null); 
    Graphics g = pjp.getGraphics(); 
    jPanel1.print(g); 
    g.dispose(); 
    pjp.end(); 
} 
संबंधित मुद्दे