JavaFX-FXML-使用fx:id获取MenuItem
我正在使用场景生成器构建Java应用程序的GUI。对于每个元素,我都给它一个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告诉我
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!
});