Я впервые работаю с javafx и построителем сцен, и, насколько я понимаю, fx:id, который вы создаете в построителе сцен для объекта, должен соответствовать имени переменной этого объекта в соответствующем классе контроллера. Для графического интерфейса, который я пишу прямо сейчас, все кнопки следуют этому, но когда я добавляю 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