Image.getGraphics () возвращает ноль - PullRequest
2 голосов
/ 01 сентября 2011

Вот код (я расширяю JFrame в этом классе) (точка 'size' - это размер экрана):

setVisible(true);
backBuffer = createImage(size.x, size.y);
backGraphics = backBuffer.getGraphics();

Я знаю, что существует проблема с методом createImage, так какв описании говорится: «Возвращаемое значение может быть нулевым, если компонент не отображается».Еще я установил Visible (правда)!Это было проблемой во всех моих программах, и решения в прошлом были странными.На этот раз, однако, я не могу это исправить.

Он периодически работал и не работал, возможно, работает на 10 прогонов, затем не работает на 3, и цикл повторяется.

Я попытался навести createImage на BufferedImage, предложенный многими поисками Google, но проблема все еще возникает.

Я также попытался не расширять jframe, а создать JFrame jframe = new JFrame () ',и используя это для рисования / etc, но проблема все еще возникает.

1 Ответ

1 голос
/ 01 сентября 2011

Это происходит от здесь .

Эти примеры создают буферизованные изображения, совместимые с экраном:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice(); 
GraphicsConfiguration gc = gs.getDefaultConfiguration();

// Create an image that does not support transparency 

bimage = gc.createCompatibleImage(width, height, Transparency.OPAQUE);

// Create an image that supports transparent pixels 

bimage = gc.createCompatibleImage(width, height, Transparency.BITMASK);

// Create an image that supports arbitrary levels of transparency 

bimage = gc.createCompatibleImage(width, height, Transparency.TRANSLUCENT);
...