我在从另一个类获取图像时遇到了一些问题。我之前从未遇到过这个问题。有人可以指出我正确的方向。
package main;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Graphics;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class Main extends JFrame {
public static Character character;
static GraphicsEnvironment graphicsEnvironment;
static GraphicsDevice graphicsDevice;
static DisplayMode displayMode;
private Image i;
public static void main(String[] args) {
displayMode = new DisplayMode(1280, 720, 16, DisplayMode.REFRESH_RATE_UNKNOWN);
graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
graphicsDevice = graphicsEnvironment.getDefaultScreenDevice();
Main m = new Main();
m.run();
}
public void run() {
setUndecorated(true);
setResizable(false);
graphicsDevice.setFullScreenWindow(this);
try {
graphicsDevice.setDisplayMode(displayMode);
} catch (Exception e) {
}
}
public void paint(Graphics g) {
g.setColor(Color.cyan);
g.fillRect(0, 0, displayMode.getWidth(), displayMode.getHeight());
i = character.getImage();
g.drawImage(i, 100, 100, this);
}
}
package main;
import java.awt.Image;
import javax.swing.ImageIcon;
public class Character {
private Image i;
public Image getImage() {
i = new ImageIcon(this.getClass().getResource("/raw/images/player1.png")).getImage();
return i;
}
}
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at main.Main.paint(Main.java:52)
它表示错误为i = character.getImage();
我在制作applet时已经做了很多次,这是我第一次尝试全屏游戏时
答案 0 :(得分:4)
记得考虑编译器告诉你的内容。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
NullPointerException意味着尚未初始化引用变量(或者== null
就此而言)。在你的情况下,这意味着调试它你必须检查我和字符。如果是您试图返回的图像,则堆栈跟踪将更深入。
由于您正在初始化i,请回顾一下角色。你永远不会将角色设置为任何东西,这意味着你不能在任何声明中使用它。
因此,您的解决方案是character = new Character();
或run()
中的main(String[] args)
,
或者您可以将getImage()
设置为静态,并说出i = Character.getImage();
。
答案 1 :(得分:2)