Graphics.drawImage NullPointerException具有良好的图像J2ME

时间:2013-07-28 19:04:59

标签: java-me

Display display = null;
String url = "http://188.2.222.253/screenshot.png";    
DataInputStream is = null;
Image img= null;
try 
{
  HttpConnection c = (HttpConnection) Connector.open(url);
  int len = (int)c.getLength();

  if (len > 0) 
  {
    is = c.openDataInputStream();
    byte[] data = new byte[len];
    is.readFully(data);
    img = Image.createImage(data, 0, len);
    Form f = new Form("Image");      
    GameCanvas gc = null;
    Graphics g = null;
    g.drawImage(img, 0, 0, 0); //NullPointerException
    gc.paint(g);
    display.setCurrent(gc); 
  } 
  else 
  {
    showAlert("length is null");
  }
  is.close();
  c.close();
} 
catch (Exception e) 
{
  e.printStackTrace();
  showAlert(e.getMessage());
}

g.drawImage(img,0,0,0)抛出NullPointerException。这意味着img为null(http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/javax/microedition/lcdui/Graphics.html)。我可以使用img与ImageItem及其NOT null。什么问题?

1 个答案:

答案 0 :(得分:0)

您在致电Graphics g = null之前设置了g.drawImage(img, 0, 0, 0)。你的img不是空的。它是你的Graphics对象。

在拨打GameCanvas gc = null - 另一个gc.paint(g)之前,您还设置了NullPointerException 3行。

除此之外,您无法使用此方法在GameCanvas上创建和绘制。 GameCanvas是一个抽象类。所以你需要创建一个扩展GameCanvas的自己的类 - 如果GameCanvas是你想要的。我也不确定是这种情况,因为你可以很容易地找到一张表格,如果你想要的只是显示一张图片。

请改为尝试:

img = Image.createImage(data, 0, len);
Form f = new Form("Image");
f.append(img);
display.setCurrent(f);