控制器类中的Javafx fx:id和变量名称不匹配

时间:2014-03-10 21:00:53

标签: java javafx javafx-2 scenebuilder

我第一次使用javafx和场景构建器,根据我的理解,您在场景构建器中为对象创建的fx:id必须与相关控制器类中该对象的变量名称匹配。对于我现在正在编写的GUI,所有按钮都遵循这一点,但是当我添加ContextMenu时,我会在名称匹配时收到错误。但是,如果我将fx:id更改为与控制器类中的变量名称不匹配,程序将运行。发生了什么事?!

EClassDTAT.fxml

<contextMenu>
   <ContextMenu fx:id="BasicShapesCST">
      <items>
         <MenuItem mnemonicParsing="false" text="Circle" fx:id="BSCircle" />
         <MenuItem mnemonicParsing="false" text="Square" fx:id="BSSquare" />
         <MenuItem mnemonicParsing="false" text="Triangle" fx:id="BSTriangle" />
      </items>
   </ContextMenu>
</contextMenu>

EClassDTATController.java

@FXML
private MenuItem BSCircle;
@FXML
private MenuItem BSSquare;
@FXML
private MenuItem BSTriangle;
@FXML
private ContextMenu BasicShapesCST;

再次澄清,当名称匹配时,我收到错误,当名称不匹配时,程序运行。这是错误:

Can not set com.sun.webpane.platform.ContextMenu fieldapplication.EClassDTATController.BasicShapesCST to javafx.scene.control.ContextMenu /GUIworkspace/GUIs/bin/application/EClassDTAT.fxml:101

1 个答案:

答案 0 :(得分:3)

您对ContextMenu的导入是错误的。您已导入

com.sun.webpane.platform.ContextMenu 

你应该在哪里导入javafx的上下文菜单

javafx.scene.control.ContextMenu