У меня проблемы с созданием BufferedImage из JPanel вне экрана.В частности, я пытаюсь нарисовать изображение JPanel (которое содержит некоторые элементы Java3D) в качестве фонового изображения для приложения, над которым я работаю.
Я нашел несколько потоков, описывающих, как получить изображение JPanel, рисуя JPanel в графический контекст BufferedImage, но когда я рисую BufferedImage, все, что я получаю, это большой белый прямоугольник.1004 * Вот мой код:
SimpleWorld j3DPanel; // a custom JPanel that contains some simple Java3D elements
// CONSTRUCTOR
public GameBackgroundObject()
{
super();
// Here I set up a JPanel that contains some Java3D elements.
j3DPanel = new SimpleWorld();
j3DPanel.setSize(mainLevel.SCREENW, mainLevel.SCREENH);
j3DPanel.setBounds(0,0,mainLevel.SCREENW, mainLevel.SCREENH);
j3DPanel.doLayout();
j3DPanel.validate();
}
protected void draw(Graphics2D parentComponentGraphics, ...)
{
super.draw(parentComponentGraphics, ...);
int w = j3DPanel.getWidth();
int h = j3DPanel.getHeight();
BufferedImage j3DImg = new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB);
Graphics2D g = j3DImg.createGraphics();
j3DPanel.paint(g);
parentComponentGraphics.drawImage(j3DImg, null, null);
}
Также я попытался добавить свою JPanel к содержимому JFrame.Он работает там и правильно отображает визуализированные элементы Java3D.Однако я просто получаю этот большой белый прямоугольник всякий раз, когда пытаюсь получить BufferedImage JPanel и нарисовать это изображение.