我第一次使用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
答案 0 :(得分:3)
您对ContextMenu的导入是错误的。您已导入
com.sun.webpane.platform.ContextMenu
你应该在哪里导入javafx的上下文菜单
javafx.scene.control.ContextMenu