我在java上导入和绘制一个简单的Image时遇到问题。 这是我的代码。
public class JGAME
{
static JFrame window = new JFrame("Gun Them Down");
static BufferedImage myImage;
static JPanel background = new JPanel();
private static void CreateMenuWindow()
{
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(600, 600);
window.setLocationRelativeTo(null);
window.setResizable(false);
window.setVisible(true);
window.add(background);
}
public static void paint(Graphics g)
{
g.drawImage(myImage, 0, 0, null);
}
public static void main(String[] args)
{
try
{
myImage = ImageIO.read(new File("src/resources/Pacman.png"));
//myImage = ImageIO.read(JGAME.class.getResource("resources/dexter.jpeg"));
}catch(IOException ex)
{
ex.printStackTrace();
}
CreateMenuWindow();
}
}
Java找到文件(“src / resources / Pacman.png”),但不会绘制我的图像。
谢谢, 史蒂夫
答案 0 :(得分:1)
JGAME.class.getResource( “/资源/ dexter.jpeg”)
getResource获取您要查找的资源的名称字符串并返回其URL。搜索资源的规则由ClassLoader定义。 转述自:http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource(java.lang.String)
所以如果你知道文件的url,我建议你只做ImageIO.read(“resources / dexter.jpeg”); 假设资源文件夹位于项目目录下。
对不起之前的混淆,我误读了你的代码。
答案 1 :(得分:1)
尝试将资源文件夹移动到JGAME和 ImageIO.read( “资源/ dexter.jpeg”);
或
ImageIO.read( “SRC /资源/ dexter.jpeg”);
答案 2 :(得分:1)
我终于找到了加载图像的方法,我将在此处发布代码。
public class JGAME
{
static JFrame window = new JFrame("Gun Them Down");
static BufferedImage myImage;
private static void CreateMenuWindow()
{
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(600, 600);
window.setLocationRelativeTo(null);
window.setResizable(false);
window.setVisible(true);
}
public static void main(String[] args) throws IOException
{
myImage = ImageIO.read(new File("D:\\STEFANO\\Progetti Java\\JGAME\\src\\resources\\Pacman.png"));
JPanel background = new JPanel()
{
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(myImage, 0, 0, null);
}
};
window.add(background);
CreateMenuWindow();
}
}
我使用paintComponent()
方法直接在我的面板上绘画,它确实有效!
答案 3 :(得分:0)
我假设您的图片位于src / main / resources
下因此,您可以通过以下方式访问该文件:
myImage = ImageIO.read(JGAME.class.getClassLoader().getResourceAsStream("dexter.jpg"));
答案 4 :(得分:0)
从你想要做的事情开始,并假设你在Windows上:
ImageIO.read(getCodeBase() + "\\resources\\dexter.jpeg");
getCodeBase()
返回.java文件的路径。
在Windows中,文件没有被" /"分隔开来。他们被" \"分开。
因为" \"是char
的转义序列,你必须放两个,而java将它识别为一个。