JavaFX中的随机NullPointerExceptions

时间:2015-06-25 03:06:23

标签: javafx nullpointerexception

关于SO的第一个问题。

所以我刚开始学习JavaFX,而且我已经在学校学习了一年的普通Java编码,所以当我遇到这个问题时我有点困惑:

我开始在JavaFX Scene Builder中创建一个基本GUI,它有几个按钮,一个textField和一个statusIndicator,当我点击buttonListen时,我希望buttonToggle消失并拥有状态指示符( spinWheel)出现。以下是处理该代码的代码:

@FXML
private TextField fieldDisplay;
private Button buttonToggle;
private Button buttonListen;
private ProgressIndicator spinWheel;

@FXML
private void ButtonListenListener(ActionEvent event){
    if(buttonToggle.isVisible()){
        buttonToggle.setVisible(false);
        spinWheel.setVisible(true);
    }
}   

对于那些熟悉JavaFX的人来说,所有这些都包含在FXMLDocumentController.java类中。但是,当我运行程序时,有一个很大的长错误堆栈,但它归结为这句话说我的一个按钮上有一个nullPointer:

Caused by: java.lang.NullPointerException
at javafxfirstproj.FXMLDocumentController.ButtonListenListener(FXMLDocumentController.java:45)

我听说JavaFX充满了bug,所以我想知道这是否是我的代码中的逻辑错误,或者我是否遇到了(据称)很多错误之一。任何和所有的帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:3)

我需要查看更多代码(特别是FXML和加载它的代码),但我猜这个问题就在这里:

@FXML
private TextField fieldDisplay;
private Button buttonToggle;
private Button buttonListen;
private ProgressIndicator spinWheel;

@FXML符号仅适用于其后的声明 fieldDisplay的声明)。如果buttonTogglebuttonListenspinWheel也与FXML相关联,则还需要对其中的每一个进行注释:

@FXML
private TextField fieldDisplay;
@FXML
private Button buttonToggle;
@FXML
private Button buttonListen;
@FXML
private ProgressIndicator spinWheel;

答案 1 :(得分:0)

如果要在FXML中创建/声明Javafx组件/节点/控件,并且希望在Java控制器类中使用它,那么您要使用的每个组件都应该使用@FXML注释。所以在你的代码中添加FXML注释

@FXML
private TextField fieldDisplay;
@FXML
private Button buttonToggle;
@FXML
private Button buttonListen;
@FXML
private ProgressIndicator spinWheel;

如果你不这样做,那么当你像这样使用它时,这些组件没有被分配任何对象

  

如果(buttonToggle.isVisible())

它会给你 NullPointerException

结帐this博客代码连接部分