NullPointerException - JavaFX

Shu*_*wad 0 java javafx

我在这段代码中得到NullPointerException.我使用的是JavaFX 2.2,NetBeans IDE 7.3.1,Windows 8,Java 1.7.0

    public class SampleController implements Initializable {
    @FXML
    GridPane grid;
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        for(int i=0;i<10;i++){
            for(int j=0;j<4;j++){
                AnchorPane tile = new AnchorPane();
                tile.setMaxSize(225, 225);
                grid.add(tile, j, i);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

-JavaFX 2.2

key*_*ser 12

我的猜测是你GridPane没有初始化.如果您在FXML文件中具有不同的ID,则会发生这种情况.

这可能是导致错误的原因,但如果没有完整的代码,我无法确定.

也,

你应该学习如何调试NullPointerException.这通常很简单.这是让你入门的东西:

  1. 读取堆栈跟踪.它的第一行看起来像这样:

Exception in thread "main" java.lang.NullPointerException.如果你没有看到一个或它没有给你任何信息,请确保你没有发现你得到的例外.

  1. 找出什么是null和where(堆栈跟踪带有行号.)
  2. 修复它(这通常意味着初始化未初始化的东西,如你的情况)

您可能想要查看如何一般地调试java程序(记录,在运行时逐步执行代码等).我写了一篇关于这个主题的短篇(初学者)博客文章.

  • 实际上,GridPane 是用@FXML 注释的,这意味着它是由 FXMLLoader 创建的。解决此问题的方法是确保 FXML 文件具有将 fx:id 设置为“grid”的 GridPane 组件。也有可能 Grid 没有足够数量的行和列,但我不确定这是否会引发 NPE (2认同)
  • 我简直不敢相信!这只是一个拼写错误.fx:id是网格,在Controller中我将其声明为网格.但什么是NPE,堆栈跟踪? (2认同)