java - 创建类的新对象后获取 NPE

标签 java swing

我正在尝试使用 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/

相关文章:

Java 泛型 : Returning Bounded Generic Type

java - Spring metro integration cvc-complex-type.2.4.c : The matching wildcard is strict, 但找不到元素 'wss:binding' 的声明

java - JButton 未显示在滚动 Pane 中

java - 如何解决 Swing JPanel 中显示倒数计时器(JLabel)的延迟问题

Java swing区别remove和removeAll

java - try catch 错误

java - Apache Storm : SLF4J: Class path contains multiple SLF4J bindings

java - 将整数列表从 java 传递到 frege 函数的最简单方法是什么?

java - 将 JButton 添加到 JTable 单元格

Java Swing 垂直堆叠组件而不展开