Несоответствие 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
Другие вопросы по тегам