Java类未从FXML文件读取fx:id

Java类未从FXML文件读取fx:id,java,javafx,fxml,Java,Javafx,Fxml,我正在制作一个JavaFX应用程序,但由于某些原因,我的控制器类无法识别FXML文件中的FXID 这是我的FXML代码: //fxml code.... <AnchorPane id="Meta Data GUI" maxHeight="-1.0" maxWidth="-1.0" minHeight="-1.0" minWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" xmlns:fx="http://javafx.com/fxml/1" xm

我正在制作一个JavaFX应用程序,但由于某些原因,我的控制器类无法识别FXML文件中的FXID

这是我的FXML代码:

//fxml code....
<AnchorPane id="Meta Data GUI" maxHeight="-1.0" maxWidth="-1.0" minHeight="-1.0" minWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.cisco.gaxl.metadatagui.windows.controllers.MainWindowController">
   //components....
   <Button fx:id="addTableButton" onAction="#testMethod" contentDisplay="CENTER" mnemonicParsing="false" prefWidth="-1.0" text="Add Table" textAlignment="CENTER" VBox.vgrow="NEVER">
   //more components...
</AnchorPane>
这是我的Java代码

import javafx.fxml.FXML
//more imports....
public class MainWindowController {
     //fields....
     @FXML private static addTableButton;

     @FXML void initialize() {
         //code...
         assert addTableButton != null : "fx:id=\"addTableButton\" was not injected: check your FXML file 'metadataEditor.fxml'.";
         //code....
         addTableButton.setOnAction(new EventHandler<ActionEvent>() {
             //code...
         }
     }

     @FXML private void testMethod() { System.out.println("Something"); }

}
我在addTableButton.setOnAction声明中得到一个nullpointer异常,这很奇怪,因为我的assert语句应该捕捉到它。我已验证我的类是否正确定义为控制器类,以及FXML的所有其他部分是否正确

现在,如果我注释掉setOnAction声明以及所有其他JavaFX组件,GUI将正常输出,但没有任何操作。但是,单击addTableButton仍将执行testMethod,正如我在FXML文件中定义的那样,因此看起来除了fx:id之外的所有东西都在工作


有人知道这里发生了什么吗?我肯定我在做一些非常愚蠢的事情,但任何帮助都是非常感谢的

Javafx似乎不接受静态变量,而且您也没有声明类型。以下是您需要的:


这解决了我的问题。非常感谢。
@FXML
private Button addTableButton;