关于插入图片的问题

weixin_39008120 2019-07-24 02:00:45
14 Image ball = GameUtil.getImage("images/ball.png");
24 bi = ImageIO.read(u);

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1400)
at planeGame/game.GameUtil.getImage(GameUtil.java:24)
at planeGame/game.MyGameFrame.<init>(MyGameFrame.java:14)
at planeGame/game.MyGameFrame.main(MyGameFrame.java:52)

百度了一下是路径问题,可是要怎么改呢
...全文
189 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Toolkit tool =this.getToolkit(); Image imgbak = tool.getImage("images/BACK.jpg");
usecf 2019-07-24
  • 打赏
  • 举报
回复
把你的包名在你的图片路径前加上试试
包名+/images/ball.png
qq_39936465 2019-07-24
  • 打赏
  • 举报
回复
图片应放在src文件夹下的images文件夹中
  • 打赏
  • 举报
回复
你这是Jframe,你应该定义一个Jpanel,然后把Jpanel添加到Jframe,不然图片肯定显示不出来

给你个简单列子 http://www.blogjava.net/marchalex/archive/2015/03/13/423425.aspx
qq_39936465 2019-07-24
  • 打赏
  • 举报
回复
我测试了一下,完全没有任何问题,是不是你图片有问题啊,换张图片试试。

weixin_39008120 2019-07-24
  • 打赏
  • 举报
回复
引用 7 楼 qq_39936465 的回复:
[quote=引用 6 楼 weixin_39008120 的回复:]
我尝试你这种以后,虽然没有报错,但是我的图片显示不出来,是不是我哪里又搞错了?


你把你的程序都贴出,这样像是在猜谜。[/quote]

package game;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

//飞机游戏的主窗口
public class MyGameFrame extends JFrame {

Image ball = GameUtil.getImage("images/ball.png");

@Override
public void paint(Graphics g) {

super.paint(g);
Color c = g.getColor();
g.setColor(Color.BLUE);
Font f = g.getFont();

g.drawLine(100, 100, 300, 300);
g.drawRect(100, 100, 300, 300);
g.drawOval(100, 100, 300, 300);
g.fillRect(100, 100, 50, 50);
g.setColor(Color.green);
g.setFont(new Font("宋体",Font.BOLD,50));
g.drawString("我在这", 300, 300);
g.drawImage(ball, 300, 300, null);
g.setColor(c);
g.setFont(f);
}

//初始化窗口
public void launchFrame() {
this.setTitle("雷电");
this.setVisible(true);
this.setSize(500, 500);
this.setLocation(300,300);

this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {
MyGameFrame f = new MyGameFrame();
f.launchFrame();
}
}

----
package game;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;

public class GameUtil {
// 工具类最好将构造器私有化。
private GameUtil() {
}


/**
* 返回指定路径文件的图片对象
* @param path
* @return
*/
public static Image getImage(String path) {
BufferedImage bi = null;
try {
URL u = GameUtil.class.getClassLoader().getResource(path);
bi = ImageIO.read(u);
} catch (IOException e) {
e.printStackTrace();
}
return bi;
}
}
qq_39936465 2019-07-24
  • 打赏
  • 举报
回复
文件放回原来的文件夹用下面的语句试试

Image ball = Toolkit.getDefaultToolkit().getImage("images/logo1.jpg");
qq_39936465 2019-07-24
  • 打赏
  • 举报
回复
引用 6 楼 weixin_39008120 的回复:
我尝试你这种以后,虽然没有报错,但是我的图片显示不出来,是不是我哪里又搞错了?


你把你的程序都贴出,这样像是在猜谜。
weixin_39008120 2019-07-24
  • 打赏
  • 举报
回复
引用 3 楼 滴滴哒哒csdn 的回复:
Toolkit tool =this.getToolkit();
Image imgbak = tool.getImage("images/BACK.jpg");




我尝试你这种以后,虽然没有报错,但是我的图片显示不出来,是不是我哪里又搞错了?
weixin_39008120 2019-07-24
  • 打赏
  • 举报
回复
引用 2 楼 usecf 的回复:
把你的包名在你的图片路径前加上试试
包名+/images/ball.png

这样也不行
weixin_39008120 2019-07-24
  • 打赏
  • 举报
回复
引用 1 楼 qq_39936465 的回复:
图片应放在src文件夹下的images文件夹中

里面是已经有了图片的

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧