Ich habe ein kleines Java-Programm mit dem Ziel, einen Screenshot einer bestimmten Komponente mit dem gleichen Programm zu nehmen.Screenshot des Containers hat schwarzen Hintergrund anstelle von Weiß
Hier ist ein MCVE davon
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
@SuppressWarnings("serial")
public class Screen {
public static void main(String[] args) {
Frame frame = new Frame("Screen Test!");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
frame.dispose();
}
});
Container container = new Container() {
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
g.fillRect(5, 5, 10, 10);
}
};
Dimension dimension = new Dimension(50, 50);
container.setPreferredSize(dimension);
frame.add(container);
frame.pack();
frame.setVisible(true);
BufferedImage bufImage = new BufferedImage(dimension.width, dimension.height, BufferedImage.TYPE_INT_RGB);
container.paint(bufImage.createGraphics());
File outputfile = new File("image.jpg");
try {
ImageIO.write(bufImage, "jpg", outputfile);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Wenn der Code ausgeführt wird diese Datei erzeugt.
Allerdings war ich eine Ausgabedatei zu erwarten, die so aussah.
Habe ich etwas falsch oder verpasste einen Schritt getan?
Ich habe versucht, einen Hintergrund von weiß auf dem Container und dem Rahmen und es machte keinen Unterschied. Auch habe ich importiert 'java.awt.Color' – Dan
@Dan sehen, meine Bearbeitung, müssen Sie den Hintergrund zu den Grafiken, die Sie verwenden, um das Bild, nicht auf den Rahmen zu zeichnen. Hoffe das hilft. –
Vielen Dank für Ihre Hilfe – Dan