| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 895 人关注过本帖
标题:调了一天没调对,是drawImage问题,说是空指针
只看楼主 加入收藏
zhu373282183
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2013-6-4
结帖率:100%
收藏
 问题点数:0 回复次数:4 
调了一天没调对,是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);
  }
  
  
    }
}
搜索更多相关主题的帖子: private thread Vector public import 
2013-06-28 01:42
zhu373282183
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2013-6-4
收藏
得分:0 
在等大神,程序猿是没有觉睡的。
求解决。
2013-06-28 01:47
windergao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:15
专家分:57
注 册:2013-6-13
收藏
得分:0 
abstract  boolean /drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
                              绘制指定图像中当前可用的图像。
abstract  boolean /drawImage(Image img, int x, int y, ImageObserver observer)
                              绘制指定图像中当前可用的图像。
abstract  boolean/ drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
                             绘制指定图像中已缩放到适合指定矩形内部的图像。
abstract  boolean /drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
                              绘制指定图像中已缩放到适合指定矩形内部的图像。
abstract  boolean/ drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)
                              绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
abstract  boolean/ drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
                              绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
API里drawImage()一共有六个方法,全部都是抽象方法,不能直接调用,要重写。
2013-06-28 11:51
java小蚂蚁
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:上海
等 级:贵宾
威 望:18
帖 子:558
专家分:2186
注 册:2013-7-2
收藏
得分:0 
要先实例化,

学海无涯#¥%……&*(
2013-07-08 10:15
xwq934088893
Rank: 2
等 级:论坛游民
威 望:1
帖 子:8
专家分:17
注 册:2013-7-12
收藏
得分:0 
我顶3楼
2013-07-12 12:01
快速回复:调了一天没调对,是drawImage问题,说是空指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018267 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved