在我的Java游戏窗口中加载图像时遇到问题

时间:2016-02-25 02:15:27

标签: java image

我一直在关注YouTube上的教程来创建一个基本的2D Java游戏。我已经有一个窗口弹出我的文字和一个矩形,但我似乎根本无法加载图像。没有错误消息,图像只是不会出现。

处理图片的代码源位于"呈现"方法如下:

package javagame;

import org.newdawn.slick.*;
import org.newdawn.slick.state.*;

public class Menu extends BasicGameState {
    public Menu(int state) {}

    @Override
    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {}

    @Override
    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
        g.drawString("Test Text", 50, 50);
        g.drawRect(50, 100, 60, 120); //x y width height

        Image obama = new Image("res/obama.jpg");
        g.drawImage(obama, 200, 130);
    }

    @Override
    public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {

    }

    @Override
    public int getID() {
        return 0;
    }
}

这位于控制台中:

Wed Feb 24 21:03:43 EST 2016 INFO:Slick Build #116
Wed Feb 24 21:03:43 EST 2016 INFO:LWJGL Version: 2.9.3
Wed Feb 24 21:03:43 EST 2016 INFO:OriginalDisplayMode: 1600 x 900 x 32 @60Hz
Wed Feb 24 21:03:43 EST 2016 INFO:TargetDisplayMode: 800 x 500 x 0 @0Hz
Wed Feb 24 21:03:43 EST 2016 INFO:Starting display 800x500
Wed Feb 24 21:03:43 EST 2016 ERROR:Failed to initialise controllers
org.lwjgl.LWJGLException: Failed to initialise controllers
    at org.lwjgl.input.Controllers.create(Controllers.java:86)
    at org.newdawn.slick.Input.initControllers(Input.java:603)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:263)
    at javagame.Game.main(Game.java:36)
Caused by: java.lang.NoClassDefFoundError: net/java/games/input/ControllerEnvironment
    at org.lwjgl.input.Controllers.create(Controllers.java:69)
    ... 3 more
Caused by: java.lang.ClassNotFoundException: net.java.games.input.ControllerEnvironment
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 4 more
Wed Feb 24 21:03:43 EST 2016 INFO:Controllers not available

如果需要,我还可以包括我的主要Game类。

虽然我过去专注于Java的基础计算机科学课程,但我们从未专注于图形组件,所以我不太确定我做错了什么。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您的程序中有一些错误,您可以使用异常堆栈跟踪进行调试。那些需要先处理。

您最大的错误似乎是编译器不知道在哪里找到您的班级ControllerEnvironment。然后,在你得到修复后:

使用类java.awt.image.BufferedImage读取图像,如下所示:

BufferedImage bi;
try {
    bi = ImageIO.read(new File("res/obama.jpg"));
} catch (IOException e){
    //Handle if file is missing
}

然后绘制它应该更容易管理。