[英]NullPointerException - 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);
}
}
}
}
-JavaFX 2.2
我的猜测是您的GridPane
没有初始化。 如果您在FXML文件中有不同的ID,则会发生这种情况。
这可能是导致错误的原因,但是我不能确定没有完整的代码。
也,
您应该学习如何调试NullPointerException
。 这通常很简单。 以下是一些入门知识:
Exception in thread "main" java.lang.NullPointerException
。 而且,如果您看不到任何信息或没有提供任何信息,请确保您没有捕获到所遇到的异常。
您可能想了解一般如何调试Java程序(登录,在运行时逐步执行代码等)。 我已经写了一篇简短的(初学者) 博客文章 。
public class SampleController implements Initializable {
@FXML
GridPane grid = new GridPane();
@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);
}
}
}
}您必须初始化GridPane
如果异常在行上引起grid.add(tile, j, i);
,这意味着GridPane grid
未初始化。 您可能尚未在<GridPane ...>
的<GridPane ...>
中添加fx:id
属性。
您的<GridPane>
应该类似于<GridPane fx:id="grid" ... >
初始化“ GridPane网格;” 通过将fx:id设置为“ grid”或通过此处的代码,从气味生成器中获取一些信息。
几种原因会导致此问题。 1. GridPane具有@FXML标记,这意味着应使用fxml loader对其进行初始化,一个可能的原因是,您没有在scenebuilder中将Grid的ID赋予GridPane。 2.另一个原因可能是错误地指定了FXML控制器的名称。 因此,您必须指定软件包的正确名称(如果控制器不在默认软件包中),然后指定(。)和控制器名称。
从fxml文件加载接口时,需要花费一些时间来初始化该fxml中的所有组件。 如果在初始化之前使用了这些组件,则将给出NullPointerException。 我个人在代码中为摆脱此问题所做的工作是等待平台加载完毕,然后开始使用这些组件。 如果您想按照以下代码寻求类似的解决方案,
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Platform.runLater(new Runnable() {
public void run() {
//run your code here
}
});
}
}, 500);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.