Merhaba, görüntü dosyasına etiket ve düğmeler gibi bileşenleri içeren paneli dönüştürmek istiyorum.Panoyu görüntü olarak nasıl kaydederim?
Aşağıdaki kodu yaptım. Görüntü kaydedildi. ancak panelin içeriği görünmez veya kaydedilmez. Panelin bileşenleriyle nasıl kaydedileceğini söyleyen var mı?
Kodu:
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());
}
}
}
bakınız [ComponentImageCapture.java] (http://stackoverflow.com/a/5853992/418556) görünür bileşenleri göstermek için - Ayrıca bkz aşağı kaydırma ** ** ve Rob Camick A sınıfı alır, bir Grunt'un birçoğu, görüntülenmemiş bir bileşenden görüntü almayı başarır. Ve göstermeden önce bileşenleri render için diğer hileler bazıları [JTable başlığı görüntüde neden görünmüyor?] (Http://stackoverflow.com/q/7369814/418556) –
göründüğü göründüğü gibi görünüyor Oluşturulacak dosya için yanlış 'Yol' sağlama. Programınız “Drive E” ile ilgili hiçbir şey bilmediğinden, oluşturulacak olan yeni 'File'' '.class File' ile ilgili olarak '..' . \ E: \ Screen.png ', iki seviyeye çıkıp' Drive E 'için uzanıyor, böyle bir şey işe yarayacak. Resmim bu şekilde oluşturuldu veya @Alberto'nun cevabı .class dosyasının yanında oluşturuldu. –