我正在尝试使用 swing 制作一个“游戏”,但遇到了一个无法解决的问题。这可能是一些简单而明显的事情,但我仍然无法弄清楚。这是我的一段代码:
public class LevelOne {
private static Crate[] crates = new Crate[3];
public LevelOne(){
crates[0].setX(200);
crates[0].setY(200);
crates[1].setX(280);
crates[1].setY(40);
crates[2].setX(440);
crates[2].setY(40);
}
//more code here
}
我尝试创建 LevelOne
类的对象以使我的 crates
变量生效。 (这是一种方法吗?)。
public static void main(String[] args) {
LevelOne l = new LevelOne();
JFrame frame = new JFrame("blabla");
Board board = new Board();
frame.add(board);
frame.setSize(805, 830);
frame.setVisible(true);
frame.setFocusable(false);
frame.setResizable(false);
frame.setDefaultCloseOperation(3);
frame.setLocation(400, 200);
board.requestFocus(true);
}
它给了我 NPE 线
LevelOne l = new LevelOne();
正如我所说,这是一个很小的项目,但我认为这可能会解决整个问题。我正在使用这个 Crate[]
箱子在我的板上绘制组件,以检查碰撞和其他内容。如果没有创建 LevelOne 类的对象,我在尝试绘制它们时仍然会得到 NPE。有什么建议、想法、解决方案吗?
最佳答案
您忘记初始化 crate 中的元素:
private static Crate[] crates = new Crate[3];
public LevelOne(){
crates[0] = new Crate(); // <= add this
crates[0].setX(200);
crates[0].setY(200);
// same for other elements
关于java - 创建类的新对象后获取 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20593729/