Несоответствие 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

person Mike    schedule 10.03.2014    source источник


Ответы (1)


Ваш импорт для ContextMenu неверен. Вы импортировали

com.sun.webpane.platform.ContextMenu 

где, как вы должны были импортировать контекстное меню для javafx

javafx.scene.control.ContextMenu
person ItachiUchiha    schedule 10.03.2014
comment
Фильтр типа eclipse очень полезен для удаления ненужных пакетов. - person Andy Till; 11.03.2014
comment
Вау, большое спасибо, это исправлено. Когда eclipse предлагал импорт, я только что увидел ContextMenu и предположил, что это правильно. - person Mike; 11.03.2014
comment
NetBeans показывает оба, предлагает подходящий вариант, автоматически выбирая его в поле со списком, и позволяет вам выбрать правильный вариант. Щелкните правой кнопкой мыши на теле редактора и выберите «Исправить импорт» или нажмите ctrl+shift+I. Любите NetBeans! - person Sнаđошƒаӽ; 05.06.2015