हाय मैं पैनल को कन्वर्ट करना चाहता हूं जिसमें छवि फ़ाइल में लेबल और बटन जैसे घटक शामिल हैं।पैनल को स्विंग में छवि के रूप में कैसे सहेजना है?
मैंने निम्नलिखित कोड किया है। छवि सहेजा गया था। लेकिन पैनल की सामग्री दिखाई नहीं दे रही है या सहेजा नहीं गया है। क्या कोई मुझे बता सकता है कि पैनल को इसके घटकों के साथ कैसे सहेजना है।
कोड:
package PanelToImage;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;
public class sample extends JPanel {
public JPanel firstpanel;
public JPanel secondpanel;
JLabel label1, label2;
JButton button1, button2;
public sample() {
firstpanel = new JPanel();
firstpanel.setSize(400,300);
firstpanel.setBackground(Color.RED);
secondpanel = new JPanel();
secondpanel.setBackground(Color.GREEN);
secondpanel.setSize(400,300);
label1 = new JLabel("label1");
label2 = new JLabel("label2");
button1 = new JButton("button1");
button2 = new JButton("button2");
firstpanel.add(label1);
firstpanel.add(button1);
secondpanel.add(label2);
secondpanel.add(button2);
saveImage(firstpanel);
add(firstpanel);
// add(secondpanel);
}
public static void main(String args[]) {
JFrame frame = new JFrame();
sample sam = new sample();
frame.setContentPane(sam);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
}
private void saveImage(JPanel panel) {
BufferedImage img = new BufferedImage(panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_RGB);
panel.paint(img.getGraphics());
try {
ImageIO.write(img, "png", new File("E://Screen.png"));
System.out.println("panel saved as image");
} catch (Exception e) {
System.out.println("panel not saved" + e.getMessage());
}
}
}
सी [ComponentImageCapture.java] (http://stackoverflow.com/a/5853992/418556) दिखाई घटकों प्रदर्शित करने के लिए - के लिए नीचे स्क्रॉल ** यह भी देखें ** और रोब Camick द्वारा एक वर्ग है कि लेता है एक प्रदर्शित किए गए घटक से छवि लेने से बहुत सारी चीजें काम करती हैं। और प्रदर्शन से पहले घटकों को प्रस्तुत करने के लिए कुछ अन्य चालें देखी जा सकती हैं [छवि में जेटीबल हेडर क्यों नहीं दिखता है?] (Http://stackoverflow.com/q/7369814/418556) –
मुझे लगता है कि आप हैं फाइल बनाने के लिए गलत 'पथ' प्रदान करना। चूंकि आपका प्रोग्राम 'ड्राइव ई' के बारे में कुछ भी नहीं जानता है, इसलिए नई 'फाइल' जिसे बनाया जाएगा, '.class फ़ाइल' के संबंध में 'सापेक्ष पथ' के साथ संदर्भित किया जाना चाहिए, जैसे' .. \। \ E: \ Screen.png', इसे दो स्तरों पर जाने और फिर 'ड्राइव ई' के लिए पहुंचने के लिए, ऐसा कुछ काम करेगा। मेरे उत्तर या @Alberto के उत्तर के साथ बनाई गई छवि .class फ़ाइल के बगल में बनाई गई है। –