导入图像问题

时间:2015-02-27 18:58:46

标签: java

我在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”),但不会绘制我的图像。

谢谢, 史蒂夫

5 个答案:

答案 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将它识别为一个。