【发布时间】:2011-06-15 03:36:23
【问题描述】:
我在下面的类中创建一个易失性图像,但每次都遇到 NullPointerException。 createVolatileImage() 返回 null(来自其 JavaDoc)的原因是 GraphicsEnvironment.isHeadless() 为真。
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.VolatileImage;
import javax.swing.JPanel;
public class Tube extends JPanel {
private VolatileImage image;
private int width, height;
public Tube() {
super(true);
}
public Tube(int width, int height) {
this.width = width;
this.height = height;
createImage();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(image == null)
createImage();
if(image.validate(getGraphicsConfiguration()) == VolatileImage.IMAGE_INCOMPATIBLE)
createImage();
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
g2.drawImage(image, 0, 0, this);
}
public VolatileImage getBufferedImage() {
return this.image;
}
private void createImage(){
if(image != null){
image.flush();
image = null;
}
image = createVolatileImage(width, height);
image.setAccelerationPriority(1.0f);
}
}
如何返回非空 VolatileImage ??
【问题讨论】:
-
为什么不改用
java.awt.image.BufferedImage? -
我有一个 BufferedImage 实现...我想在不同平台上对这两个实现进行基准测试。
-
等等,你真的是在无头运行吗?如果是这样,那么您已经回答了自己的问题...
-
嗯,我不知道那是什么意思,或者假设是什么意思?我怎样才能改变那种无头状态???
-
Here 是一种解释。但是……你是无头还是不确定?