Несоответствие Javafx FX: ID и имя переменной в классе контроллера
Я работаю с 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
1 ответ
Ваш импорт для ContextMenu неправильный. Вы импортировали
com.sun.webpane.platform.ContextMenu
где, как вы должны были импортировать контекстное меню для javafx
javafx.scene.control.ContextMenu