JavaFX-FXML-使用fx:id获取MenuItem

JavaFX-FXML-使用fx:id获取MenuItem,java,javafx,fxml,scenebuilder,Java,Javafx,Fxml,Scenebuilder,我正在使用场景生成器构建Java应用程序的GUI。对于每个元素,我都给它一个fx:id,以便以后可以引用它们。我需要在它的许多元素上使用setOnAction(),例如: ((Button)mainPane.lookup("#submitButton")).setOnAction(e->{ // ... code triggered when button is pressed ... }); 这适用于除MenuItems之外的大多数元素。当我尝试以下操作时,Eclipse告诉我

我正在使用场景生成器构建Java应用程序的GUI。对于每个元素,我都给它一个
fx:id
,以便以后可以引用它们。我需要在它的许多元素上使用
setOnAction()
,例如:

((Button)mainPane.lookup("#submitButton")).setOnAction(e->{
    // ... code triggered when button is pressed ...
});
这适用于除
MenuItem
s之外的大多数元素。当我尝试以下操作时,Eclipse告诉我“无法从
节点
强制转换到
菜单项
”,并且它不起作用

// Does not work
((MenuItem)mainPane.lookup("#about")).setOnAction(e->{
    // ... take user to about page ...
});
我看到
MenuItem
只扩展了
对象
,因此它不能从
节点
强制转换。如何使用其
fx:id
取回
MenuItem


注意:我知道我可以在FXML的操作上使用
,但我想利用Lambda函数并保持事件处理代码的样式不变。

((按钮)主窗格。查找(#submitButton”)
((按钮)主窗格。查找(#submitButton”))
试着从
菜单栏中查找它。使用下面塞德里克的答案。这样,您还可以使用
@FXML MenuItem mnuaabout声明所有
菜单项
s声明。比尝试查找每个节点的
fx:id
要好得多。尝试从
菜单栏中查找。使用下面的Sedrick答案。这样,您还可以使用
@FXML MenuItem mnuaabout声明所有
菜单项
s声明。比为每个节点查找
fx:id
要好得多。要完成Sedrick的回答,“提示”只是让变量控制器端的名称与在FXML端定义的fx:id匹配(类型必须匹配!)。JavaFX将使它们自动匹配。之后,您可以根据建议添加一些操作事件或任何您想要的内容。要完成Sedrick的回答,“提示”只是让变量控制器端的名称与FXML端定义的fx:id匹配(类型必须匹配!)。JavaFX将使它们自动匹配。在此之后,您可以根据建议添加一些动作事件或任何您想要的内容。
@FXML Button submitButton;
submitButton.setOnAction(event ->{
    //Your code here!
});