component.createimage返回null甚至headless()返回false

时间:2014-08-05 06:59:14

标签: java graphics jpanel

我正在尝试绘制一个图形。其中对于双缓冲,我使用的是组件类的CreateImage()方法。但是使用与输入相同的属性,此方法随机返回null值。当我搜索时,我发现当GraphicsEnvironmemt.headless()返回true时会发生这种情况。然后我打印GraphicsEnvironmemt.headless()的值,它总是返回false。 当createimage()返回null时是否还有其他任何情况。我搜索了很多但没有得到适当的答案。

1 个答案:

答案 0 :(得分:0)

Java Docs

指定
  

如果组件不可显示,则返回值可能为null

是的,如果headless为false,则会发生这种情况,但如果Component未附加到显示的容器,也会发生这种情况。当组件连接到本机对等方时,该组件将变为可显示。如果组件从未在屏幕上显示或者它所附着的窗口(直接或间接)被丢弃,则会发生这种情况

您可以使用类似......

的内容
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
BufferedImage image = gc.createCompatibleImage(width, height, transparency);

创建BufferedImage,该GraphicsConfiguration已针对指定的{{1}}

进行了优化