wie speichern panel als Bild in swing?

Hallo ich möchte konvertieren-panel enthält Komponenten wie label und-Tasten, um Bild-Datei.

Ich habe den folgenden code. Das Bild gespeichert wurde. aber der Inhalt des Fensters nicht sichtbar sind oder gespeichert. Kann mir jemand sagen, wie speichern Sie das panel mit seinen Komponenten.

Code:

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());
    }
}
}
Siehe ComponentImageCapture.java für die Anzeige der sichtbaren Komponenten - scrollen Sie nach unten für Siehe auch & Eine Klasse von Rob Camick, das nimmt viel von der Routinearbeit aus nehmen Sie ein Bild aus einer Komponente, die wurde nicht angezeigt. Und einige andere tricks für die rendering-Komponenten vor der Anzeige gesehen werden kann Warum hat die JTable header erscheint nicht in der Bild?
Mir scheint, Sie stellen die falschen Path für die Datei erstellt werden. Da dein Programm weiß nichts über das, was Drive E, so der neue File erstellt werden müssen referenziert werden mit Relative Path mit Bezug auf die .class File wie ..\..\E:\Screen.png, so dass es gehen zwei Stufen nach oben und dann heraus erreichen für Drive E, so etwas wie dies funktionieren wird. Das erzeugte Bild mit meiner Antwort, oder @Alberto 's Antwort erstellt wird neben dem .Klasse Datei.

InformationsquelleAutor Babu R | 2012-06-30

Schreibe einen Kommentar