首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

drawimage有关问题,说是空指针

2013-07-01 
drawimage问题,说是空指针错误:Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

drawimage问题,说是空指针

错误:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at mapDraw.pathDraw(mapDraw.java:127)



是说图片空指针,但是,上面一样的用法却是可以画图的。
下面g.drawImage(car, i.x, i.y, x, y, null);这句话错了;






import java.awt.Color; public class mapDraw extends JPanel {  /**
  * 
  */
 private static final long serialVersionUID = 1L;
 private Path sp=new Path();
 private Vector<Point> path = new Vector<Point>();
 private boolean[][] map = new boolean[10][10];
 private int xx;
 private int yy;
 //private int [][]b;
 
 
 public mapDraw(int xx2, int yy2) {
  // TODO Auto-generated constructor stub
  xx=xx2;
  yy=yy2;
 }  public void setMap() {
  int m, n;
  int i;
  int w, h;   for (m = 0; m <= 9; m++) {
   for (n = 0; n <= 9; n++) {
      map[m][n] = false; // 初始化,false表示路通;true表示障碍;,1表示最短路径    }
  }
  
  
  
  for (i = 0; i < 10; i++) // 设置10个障碍
  {
   w = (int) (Math.random() * 10);
   h = (int) (Math.random() * 10);
   //b[0][i]=w;
   //b[1][i]=h;
   
   map[w][h] = true; // 设置为障碍
   if (map[0][0] == true)//因为(0,0)是起始点,不能设置成障碍。
    map[0][0] = false;
  }
 }  public boolean[][] getMap() {
  return map;
 }  /**
  * Create the panel.
  */  
 public void draw() {
  Graphics g = getGraphics();
  int m, n;
  // 加载地图背景
  Image image = new ImageIcon(getClass().getResource("/image/map2.jpg")).getImage();
  g.drawImage(image, 0, 0, 450, 500, null);
  // 加载地图网格
  int x = this.getSize().width / 10;


  int y = this.getSize().height / 10;   for (m = 0; m < 10; m++) {
   for (n = 0; n < 10; n++) {
    g.setColor(Color.black);
    g.drawRect(x * m, y * n, x, y);
   }
  }
        
  //加载小车
  //Image car = new ImageIcon(getClass().getResource("/image/car.jpg")).getImage();  
  //g.drawImage(car, 0, 0, x, y, this);
     // 随机添加加障碍
  for (m = 1; m < 10; m++)           //不画边界
   for (n = 0; n < 10; n++) {
    if (map[m][n] == true) {
     Image bar = new ImageIcon(getClass().getResource("/image/b0.jpg")).getImage();
     g.drawImage(bar, x * m, y * n, x, y, null);
     
     
    }
   } 
  
  //画路径
  /*for (m = 0; m < 10; m++)           //不画边界
   for (n = 0; n < 10; n++) {
    if (map[m][n] == false) {
     Image car = new ImageIcon(getClass().getResource("/image/car.jpg")).getImage();
     g.drawImage(car, x * m, y * n, x, y, this);
    }
   }
   */  
        
    
 }
 
 
 
 
    public void pathDraw(){
     //找路径,画路径
     Graphics g = getGraphics();
     Image car = new ImageIcon(getClass().getResource("/image/c.jpg")).getImage();
  int x = this.getSize().width / 10;
  int y = this.getSize().height / 10;
  sp.setMap(map, 10, 10);
  sp.calcPath(0, 0, xx, yy);
  System.out.print(path.isEmpty());
  path=sp.getPath();


  for(Point i:path){
   g.drawImage(car, i.x, i.y, x, y, null);
  }
  
  
    } 
}

[解决办法]
for(Point i:path){
   g.drawImage(car, i.x, i.y, x, y, null);
  }

这个i是什么对象?

热点排行